 <p>new class util.java</p> <pre><code>public class Util { private DataBaseHelper dbHelper; private GeoFencApplicationDataset Dataset; private int getId; public static boolean checkConnection(Context mContext) { NetworkInfo info = ((ConnectivityManager) mContext .getSystemService(Context.CONNECTIVITY_SERVICE)) .getActiveNetworkInfo(); if (info == null || !info.isConnected()) { return false; } if (info.isRoaming()) { return true; } return true; } public void DrawPath(Context c, GeoPoint src, GeoPoint dest, int color, MapView mMapView01) { Dataset = (GeoFencApplicationDataset) c.getApplicationContext(); dbHelper = Dataset.getDbHelper(); StringBuilder urlString = new StringBuilder(); urlString.append("http://maps.google.com/maps?f=d&amp;hl=en"); urlString.append("&amp;saddr=");// from urlString.append(Double.toString((double) src.getLatitudeE6() / 1.0E6)); urlString.append(","); urlString .append(Double.toString((double) src.getLongitudeE6() / 1.0E6)); urlString.append("&amp;daddr=");// to urlString .append(Double.toString((double) dest.getLatitudeE6() / 1.0E6)); urlString.append(","); urlString .append(Double.toString((double) dest.getLongitudeE6() / 1.0E6)); urlString.append("&amp;ie=UTF8&amp;0&amp;om=0&amp;output=kml"); Log.d("xxx", "URL=" + urlString.toString()); Document doc = null; HttpURLConnection urlConnection = null; URL url = null; try { url = new URL(urlString.toString()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.connect(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(urlConnection.getInputStream()); if (doc.getElementsByTagName("GeometryCollection").getLength() &gt; 0) { final String path = doc.getElementsByTagName("GeometryCollection") .item(0).getFirstChild().getFirstChild() .getFirstChild().getNodeValue(); final String[] pairs = path.split(" "); String[] lngLat = pairs[0].split(","); final GeoPoint startGP = new GeoPoint( (int) (Double.parseDouble(lngLat[1]) * 1E6), (int) (Double.parseDouble(lngLat[0]) * 1E6)); mMapView01.getOverlays().add( new PathOverLay(startGP, startGP, 1)); GeoPoint gp1; GeoPoint gp2 = startGP; for (int i = 1; i &lt; pairs.length; i++) { lngLat = pairs[i].split(","); gp1 = gp2; gp2 = new GeoPoint( (int) (Double.parseDouble(lngLat[1]) * 1E6), (int) (Double.parseDouble(lngLat[0]) * 1E6)); mMapView01.getOverlays().add( new PathOverLay(gp1, gp2, 2, color)); if (getId != 0) { dbHelper.insertTempLatLong(lngLat[1], lngLat[0], getId); } Log.d("xxx", "pair:" + pairs[i]); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } } public double[] getLocation(Context c) { Criteria criteria; String provider; LocationManager locManager = (LocationManager) c .getSystemService(Context.LOCATION_SERVICE); criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAccuracy(Criteria.ACCURACY_COARSE); provider = locManager.getBestProvider(criteria, true); double[] loca = new double[2]; // For Latitude &amp; Longitude Location location = locManager.getLastKnownLocation(provider); if (location != null) { loca[0] = location.getLatitude(); loca[1] = location.getLongitude(); } else { loca[0] = 0.0; loca[1] = 0.0; } return loca; } public void setId(int id) { // TODO Auto-generated method stub getId = id; } } </code></pre> <p>new class PathOverLay.java</p> <pre><code>public class PathOverLay extends Overlay { private GeoPoint gp1; private GeoPoint gp2; private int mRadius = 6; private int mode = 0; private int defaultColor; private String text = ""; private Bitmap img = null; public PathOverLay(GeoPoint gp1, GeoPoint gp2, int mode) // GeoPoint is a // int. (6E) { this.gp1 = gp1; this.gp2 = gp2; this.mode = mode; defaultColor = 999; // no defaultColor } public PathOverLay(GeoPoint gp1, GeoPoint gp2, int mode, int defaultColor) { this.gp1 = gp1; this.gp2 = gp2; this.mode = mode; this.defaultColor = defaultColor; } public void setText(String t) { this.text = t; } public void setBitmap(Bitmap bitmap) { this.img = bitmap; } public int getMode() { return mode; } @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { Projection projection = mapView.getProjection(); if (shadow == false) { Paint paint = new Paint(); paint.setAntiAlias(true); Point point = new Point(); projection.toPixels(gp1, point); // mode=1&amp;#65306;start if (mode == 1) { if (defaultColor == 999) paint.setColor(Color.BLUE); else paint.setColor(defaultColor); // RectF oval = new RectF(point.x - mRadius, point.y - mRadius, // point.x + mRadius, point.y + mRadius); RectF oval = new RectF(point.x - mRadius, point.y - mRadius, point.x + mRadius, point.y + mRadius); // start point canvas.drawOval(oval, paint); } // mode=2&amp;#65306;path else if (mode == 2) { if (defaultColor == 999) paint.setColor(Color.RED); else paint.setColor(defaultColor); Point point2 = new Point(); projection.toPixels(gp2, point2); paint.setStrokeWidth(5); paint.setAlpha(70); canvas.drawLine(point.x, point.y, point2.x, point2.y, paint); } /* mode=3&amp;#65306;end */ else if (mode == 3) { /* the last path */ if (defaultColor == 999) paint.setColor(Color.GREEN); else paint.setColor(defaultColor); Point point2 = new Point(); projection.toPixels(gp2, point2); paint.setStrokeWidth(5); paint.setAlpha(120); canvas.drawLine(point.x, point.y, point2.x, point2.y, paint); RectF oval = new RectF(point2.x - mRadius, point2.y - mRadius, point2.x + mRadius, point2.y + mRadius); /* end point */ paint.setAlpha(120); canvas.drawOval(oval, paint); } } return super.draw(canvas, mapView, shadow, when); } // Read more: // http://csie-tw.blogspot.com/2009/06/android-driving-direction-route-path.html#ixzz1hte9kGoi } </code></pre> <p>final call method ... </p> <pre><code>util = new Util(); mapOverlays = mapView.getOverlays(); util = new Util(); util.setId(id); GeoPoint srcGeoPoint = new GeoPoint((int) (destLat * 1E6), (int) (destLong * 1E6)); GeoPoint destGeoPoint = new GeoPoint((int) (srcLat * 1E6), (int) (srcLong * 1E6)); progrDialog = ProgressDialog.show(AddFenceActivity.this, "", "Please Wait..", true); mapView.getOverlays().add( new PathOverLay(srcGeoPoint,destGeoPoint, 2,Color.RED)); util.DrawPath(AddFenceActivity.this, srcGeoPoint, destGeoPoint, Color.RED, mapView); mapView.getController().animateTo(srcGeoPoint); public class MapOverLayItem extends ItemizedOverlay&lt;OverlayItem&gt; { private ArrayList&lt;OverlayItem&gt; mOverlays = new ArrayList&lt;OverlayItem&gt;(); Context mContext; public MapOverLayItem(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); // TODO Auto-generated constructor stub } public void addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } @Override protected OverlayItem createItem(int i) { // TODO Auto-generated method stub return mOverlays.get(i); } @Override public int size() { // TODO Auto-generated method stub return mOverlays.size(); } public MapOverLayItem(Drawable defaultMarker, Context context) { super(defaultMarker); mContext = context; } } </code></pre>