An example of the URL you are about to analyze is ...
http://maps.googleapis.com/maps/api/directions/xml?origin=52.31,16.71&destination=51.27,6.75&sensor=false
change source [lat, long] and destination [lat, long] for your purpose
-
point selection
import java.io.StringReader; import java.util.ArrayList; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import net.gynsoft.citydusseldorf.lib.HttpClient; import android.os.Handler; import com.google.android.maps.GeoPoint; public class MapRoute { private GeoPoint gpSrc = null; private GeoPoint gpDest = null; private ArrayList<GeoPoint> alRoute = new ArrayList<GeoPoint>(); private Handler haRoute = new Handler(); public interface RouteListener { public void onDetermined(ArrayList<GeoPoint> alPoint); public void onError(); } private RouteListener oRoute = null; public MapRoute(GeoPoint gpSrc,GeoPoint gpDest) { this.gpSrc = gpSrc; this.gpDest = gpDest; } public void getPoints(RouteListener oRoute) { this.oRoute = oRoute; new Thread(ruFetch).start(); } private Runnable ruFetchOk = new Runnable() { public void run() { oRoute.onDetermined(alRoute); } }; private Runnable ruFetchError = new Runnable() { public void run() { oRoute.onDetermined(alRoute); } }; private Runnable ruFetch = new Runnable() { public void run() { String szUrl = "http://maps.googleapis.com/maps/api/directions/xml"; szUrl += "?origin=" + (gpSrc.getLatitudeE6()/1e6) + "," + (gpSrc.getLongitudeE6()/1e6); szUrl += "&destination=" + (gpDest.getLatitudeE6()/1e6) + "," + (gpDest.getLongitudeE6()/1e6); szUrl += "&sensor=true"; HttpClient oHttp = HttpClient.getInstance(); String szXml = oHttp.doGet(szUrl,""); try { XmlPullParserFactory xppfFactory = XmlPullParserFactory.newInstance(); xppfFactory.setNamespaceAware(true); XmlPullParser xppParses = xppfFactory.newPullParser(); xppParses.setInput(new StringReader(szXml)); int iEventType = xppParses.getEventType(); String szTag = ""; String szText = ""; boolean bStep = false; int iLat = 0; int iLong = 0; while(iEventType != XmlPullParser.END_DOCUMENT) { iEventType = xppParses.next(); if(iEventType == XmlPullParser.START_TAG) { szTag = xppParses.getName(); if(szTag.equals("step")) bStep = true; } else if(iEventType == XmlPullParser.TEXT) { if(szTag.equals("points")) szText = ""; else szText = xppParses.getText().trim(); } else if(iEventType == XmlPullParser.END_TAG) { if(xppParses.getName().equals("step")) { bStep = false; } else if(bStep && xppParses.getName().equals("start_location") || xppParses.getName().equals("end_location")) { GeoPoint gpPoint = new GeoPoint(iLat,iLong); alRoute.add(gpPoint); } else if(bStep && xppParses.getName().equals("lat")) { iLat = (int)(Double.parseDouble(szText) * 1e6); } else if(bStep && xppParses.getName().equals("lng")) { iLong = (int)(Double.parseDouble(szText) * 1e6); } } } } catch(Exception e) { e.printStackTrace(); haRoute.post(ruFetchError); } if(alRoute.size() == 0) haRoute.post(ruFetchError); else haRoute.post(ruFetchOk); } }; }
-
card overlay
public class MapRouteOverlay extends Overlay { private GeoPoint gp1; private GeoPoint gp2; private int mode=0; private int defaultColor; public MapRouteOverlay(GeoPoint gp1,GeoPoint gp2,int mode)
-
how to use it ... somewhere in my work
dEmpty = new BitmapDrawable(Bitmap.createBitmap(1,1,Bitmap.Config.ARGB_8888)); dPin = getResources().getDrawable(R.drawable.pin_map); private void doDrawPath(GeoPoint gpSrc,GeoPoint gpDest) { MapRoute oRoute = new MapRoute(gpSrc,gpDest); oRoute.getPoints(new RouteListener() { @Override public void onDetermined(ArrayList<GeoPoint> alPoint) { GeoPoint oPointA = null; GeoPoint oPointB = null; mvMap.getOverlays().clear(); for(int i=1; i<alPoint.size()-1; i++) { oPointA = alPoint.get(i-1); oPointB = alPoint.get(i); mvMap.getOverlays().add(new MapRouteOverlay(oPointA,oPointB,2,Color.RED)); } mvMap.getOverlays().add(new MapRoutePinOverlay(alPoint.get(0),dPin)); mvMap.getOverlays().add(new MapRoutePinOverlay(alPoint.get(alPoint.size()-1),dPin)); mvMap.invalidate(); } @Override public void onError() { } }); }
Matt Rutkowsky Dec 17 '14 at 2:14 2014-12-17 02:14
source share