package org.androad.sys.ors.rs.google; import java.util.List; import junit.framework.Assert; import org.osmdroid.util.GeoPoint; import org.androad.sys.ors.adt.rs.DirectionsLanguage; import org.androad.sys.ors.adt.rs.RoutePreferenceType; import org.androad.sys.ors.util.constants.ORSXMLConstants; public class GoogleRSRequestComposer implements ORSXMLConstants { /** * * @param ctx * @param nat * @param start * @param vias * @param end * @return */ public static String create(final DirectionsLanguage nat, final GeoPoint start, final List<GeoPoint> vias, final GeoPoint end, final RoutePreferenceType pRoutePreference, final boolean pAvoidTolls, final boolean pAvoidHighways){ Assert.assertNotNull(start); Assert.assertNotNull(end); Assert.assertNotNull(pRoutePreference); final StringBuilder sb = new StringBuilder(); sb.append("output=kml&doflg=ptk"); sb.append("&hl=").append(nat.ID); sb.append("&saddr=").append(start.getLatitudeE6() / 1E6).append("%2C").append(start.getLongitudeE6() / 1E6); boolean addDirflg = false; final StringBuilder dirflg = new StringBuilder("&dirflg="); if (pAvoidHighways) { dirflg.append("h"); addDirflg = true; } if (pAvoidTolls) { dirflg.append("t"); addDirflg = true; } if (pRoutePreference.mDefinedName.equals(RoutePreferenceType.PEDESTRIAN.mDefinedName)) { dirflg.append("w"); addDirflg = true; } if (pRoutePreference.mDefinedName.equals(RoutePreferenceType.BICYCLE.mDefinedName)) { dirflg.append("b"); addDirflg = true; } if (addDirflg) { sb.append(dirflg); } sb.append("&daddr=").append(end.getLatitudeE6() / 1E6).append("%2C").append(end.getLongitudeE6() / 1E6); if(vias != null){ for (int i = 0; i < vias.size(); i++) { final GeoPoint via = vias.get(i); sb.append("+to:").append(via.getLatitudeE6() / 1E6).append("%2C").append(via.getLongitudeE6() / 1E6); } } return sb.toString(); } }