99 lines
3.9 KiB
Java
99 lines
3.9 KiB
Java
package tourplaner.business;
|
|
|
|
import java.awt.*;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* Zuständig für das besorgen der Map für die UI und PDF-Reports und für die Berechneten infos der Tour (Dauer, Strecke)
|
|
*/
|
|
public class DirectionMap {
|
|
private double dauer, strecke;
|
|
private String sessionId;
|
|
|
|
/**
|
|
* Holt die Map als image und alle Daten zur berechneten Route
|
|
*
|
|
* @param start Startpunkt
|
|
* @param ende Endpunkt
|
|
* @param tourname Name der Aktuellen Tour
|
|
* @throws DirectionMapException Fehler beim Image der Map
|
|
*/
|
|
public DirectionMap (String start, String ende, String tourname) throws DirectionMapException {
|
|
try {
|
|
getDirections(start, ende);
|
|
Image map = getMap(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "size"));
|
|
Image mappdf = getMap(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "sizePdf"));
|
|
String file = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + ".jpg";
|
|
String filepdf = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + "_pdf.jpg";
|
|
FileHelper.saveImage(map, "jpg", new File(file));
|
|
FileHelper.saveImage(mappdf, "jpg", new File(filepdf));
|
|
if(ConfigHelper.getIniInt(ConfigHelper.getStandartConfig(), "settings", "openmap") == 1) {
|
|
FileHelper.openDefault(file);
|
|
}
|
|
}catch (IOException e){
|
|
throw new DirectionMapException(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get berechnete Dauer in Minuten
|
|
* @return Berechnete Dauer der Tour
|
|
*/
|
|
public double getDauer() {
|
|
return dauer;
|
|
}
|
|
|
|
/**
|
|
* Get berechnete Strecke
|
|
* @return Berechnete Strecke der Tour
|
|
*/
|
|
public double getStrecke() {
|
|
return strecke;
|
|
}
|
|
|
|
/**
|
|
* Downloadet die Map von Mapquest
|
|
* @return Image von der Map
|
|
* @throws DirectionMapException Fehler beim Get der Map
|
|
*/
|
|
private Image getMap(String size) throws DirectionMapException {
|
|
try {
|
|
return HttpHelper.httpGetImage("https://www.mapquestapi.com/staticmap/v5/map?session="+this.sessionId+"&size="+size+"&key="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key"));
|
|
}catch (IOException e){
|
|
throw new DirectionMapException(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Besorgt die Infos der Tour von Mapquest Directions
|
|
* @param start Start der Tour
|
|
* @param ende Ende der Tour
|
|
* @throws DirectionMapException Fehler beim besorgen der infos über die Tour
|
|
*/
|
|
private void getDirections(String start, String ende) throws DirectionMapException {
|
|
try {
|
|
String json = HttpHelper.httpGetJsonString("https://www.mapquestapi.com/directions/v2/route?key="+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key")+"&from="+start+"&to="+ende+"&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false");
|
|
this.strecke = JsonHelper.getDoubleFromJson(json, "distance");
|
|
this.dauer = formatetTimeToMinutes(JsonHelper.getStingFromJson(json, "formattedTime"));
|
|
this.sessionId = JsonHelper.getStingFromJson(json, "sessionId");
|
|
}catch (IOException e){
|
|
throw new DirectionMapException(e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Formatet time HH:MM:SS in Minuten umwandeln
|
|
* @param formatetTime Formatet time HH:MM:SS
|
|
* @return Zeit in Minuten
|
|
*/
|
|
private double formatetTimeToMinutes(String formatetTime){
|
|
double minutes = 0;
|
|
String[] result = formatetTime.split(":");
|
|
minutes += Double.parseDouble(result[0]) * 60;
|
|
minutes += Double.parseDouble(result[1]);
|
|
minutes += Double.parseDouble(result[2]) / 60;
|
|
return minutes;
|
|
}
|
|
}
|