android - Driving direction is not showing in Google Map While all points are getting after fetching them? -


i using sort of code draw driving direction between 2 point map loading , points getting while parsing ...

import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url; import java.util.arraylist; import java.util.hashmap; import java.util.list;  import org.json.jsonobject;  import android.graphics.color; import android.os.asynctask; import android.os.bundle; import android.support.v4.app.fragmentactivity; import android.util.log; import android.view.menu;  import com.esysolutions.dilosys.map.directionsjsonparser; import com.google.android.gms.maps.cameraupdatefactory; import com.google.android.gms.maps.googlemap; import com.google.android.gms.maps.supportmapfragment; import com.google.android.gms.maps.model.latlng; import com.google.android.gms.maps.model.polylineoptions;  public class locationdrivingmap extends fragmentactivity {      googlemap map;     arraylist<latlng> markerpoints;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.locationdrivingdirection);          markerpoints = new arraylist<latlng>();          supportmapfragment fm = (supportmapfragment) getsupportfragmentmanager()                 .findfragmentbyid(r.id.map);          map = fm.getmap();          if (map != null) {              map.setmylocationenabled(true);              string url = getdirectionsurl();              log.d("............full url...................", url);              downloadtask downloadtask = new downloadtask();              downloadtask.execute(url);          }     }      private string getdirectionsurl() {          string parameters = "origin=13.687140112679154,100.535258688032630&destination=13.683660045847258,100.53900808095932&sensor=false&units=metric&mode=driving";          string output = "json";          string url = "https://maps.googleapis.com/maps/api/directions/"                 + output + "?" + parameters;          return url;      }      /** method download json data url */     private string downloadurl(string strurl) throws ioexception {         string data = "";         inputstream istream = null;         httpurlconnection urlconnection = null;         try {             url url = new url(strurl);              // creating http connection communicate url             urlconnection = (httpurlconnection) url.openconnection();              // connecting url             urlconnection.connect();              // reading data url             istream = urlconnection.getinputstream();              bufferedreader br = new bufferedreader(new inputstreamreader(                     istream));              stringbuffer sb = new stringbuffer();              string line = "";             while ((line = br.readline()) != null) {                 sb.append(line);             }              data = sb.tostring();              br.close();          } catch (exception e) {             log.d("exception while downloading url", e.tostring());         } {             istream.close();             urlconnection.disconnect();         }         return data;     }      // fetches data url passed     private class downloadtask extends asynctask<string, void, string> {          // downloading data in non-ui thread         @override         protected string doinbackground(string... url) {              log.d(">>>>>>>inside downloadtask<<<<<<<<<", url[0]);              // storing data web service             string data = "";              try {                 // fetching data web service                 data = downloadurl(url[0]);             } catch (exception e) {                 log.d("background task", e.tostring());             }             return data;         }          // executes in ui thread, after execution of         // doinbackground()         @override         protected void onpostexecute(string result) {             super.onpostexecute(result);              parsertask parsertask = new parsertask();              // invokes thread parsing json data             parsertask.execute(result);          }     }      /** class parse google places in json format */     private class parsertask extends             asynctask<string, integer, list<list<hashmap<string, string>>>> {          // parsing data in non-ui thread         @override         protected list<list<hashmap<string, string>>> doinbackground(                 string... jsondata) {              jsonobject jobject;             list<list<hashmap<string, string>>> routes = null;              try {                 jobject = new jsonobject(jsondata[0]);                 directionsjsonparser parser = new directionsjsonparser();                  // starts parsing data                 routes = parser.parse(jobject);                  log.d("++++++++++++++++++++route", "" + routes);             } catch (exception e) {                 e.printstacktrace();             }             return routes;         }          // executes in ui thread, after parsing process         @override         protected void onpostexecute(list<list<hashmap<string, string>>> result) {             arraylist<latlng> points = null;             polylineoptions lineoptions = null;              // traversing through routes             (int = 0; < result.size(); i++) {                 points = new arraylist<latlng>();                 lineoptions = new polylineoptions();                  // fetching i-th route                 list<hashmap<string, string>> path = result.get(i);                  // fetching points in i-th route                 (int j = 0; j < path.size(); j++) {                     hashmap<string, string> point = path.get(j);                      double lat = double.parsedouble(point.get("lat"));                     double lng = double.parsedouble(point.get("lng"));                     latlng position = new latlng(lat, lng);                      points.add(position);                      log.d("???????????????  points", "" + points);                  }                  // adding points in route lineoptions                 lineoptions.addall(points);                  log.d("*************************  lineoptions", ""                         + lineoptions);                 lineoptions.width(2);                 lineoptions.color(color.red);              }              // drawing polyline in google map i-th route             map.addpolyline(lineoptions);             map.movecamera(cameraupdatefactory.newlatlngzoom(new latlng(                     13.687140112679154, 100.535258688032630), 2.0f));         }     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.main, menu);         return true;     } } 

help please ............

log inside point gets value...but path not showing here

[lat/lng: (13.68719,100.53523), lat/lng: (13.68723,100.53524), lat/lng: (13.68728,100.53526), lat/lng: (13.68728,100.53526), lat/lng: (13.68721,100.5355), lat/lng: (13.68715,100.53573), lat/lng: (13.68709,100.53591), lat/lng: (13.68699,100.53616), lat/lng: (13.68693,100.53629), lat/lng: (13.68689,100.53635), lat/lng: (13.68679,100.5365), lat/lng: (13.68666,100.53666), lat/lng: (13.68656,100.53679), lat/lng: (13.68643,100.53691), lat/lng: (13.68622,100.53707), lat/lng: (13.68554,100.5375), lat/lng: (13.68509,100.5378), lat/lng: (13.68478,100.53804), lat/lng: (13.68469,100.53812), lat/lng: (13.68461,100.53818), lat/lng: (13.68456,100.53823), lat/lng: (13.68449,100.53828), lat/lng: (13.68439,100.53837), lat/lng: (13.68406,100.53868), lat/lng: (13.68381,100.53894), lat/lng: (13.68371,100.53905)] 

here got solution question :

package com.esysolutions.dilosys.v2;  import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url; import java.util.arraylist; import java.util.hashmap; import java.util.list;  import org.json.jsonobject;  import android.graphics.color; import android.os.asynctask; import android.os.bundle; import android.support.v4.app.fragmentactivity; import android.util.log; import android.view.menu;  import com.esysolutions.dilosys.map.directionsjsonparser; import com.google.android.gms.maps.googlemap; import com.google.android.gms.maps.supportmapfragment; import com.google.android.gms.maps.model.bitmapdescriptorfactory; import com.google.android.gms.maps.model.latlng; import com.google.android.gms.maps.model.markeroptions; import com.google.android.gms.maps.model.polylineoptions;  public class locationdrivingmap extends fragmentactivity {      googlemap map;     arraylist<latlng> markerpoints;     markeroptions op;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.locationdrivingdirection);          markerpoints = new arraylist<latlng>();          supportmapfragment fm = (supportmapfragment) getsupportfragmentmanager()                 .findfragmentbyid(r.id.map);          map = fm.getmap();          latlng point1 = new latlng(13.687140112679154, 100.535258688032630);         latlng point2 = new latlng(14.683660045847258, 105.53900808095932);          markerpoints.add(point1);         markerpoints.add(point2);          if (map != null) {              map.setmylocationenabled(true);              (int j = 0; j < 2; j++) {                  op = new markeroptions();                 op.position(markerpoints.get(j));                  if (markerpoints.size() == 1) {                     op.icon(bitmapdescriptorfactory                             .defaultmarker(bitmapdescriptorfactory.hue_green));                 } else if (markerpoints.size() == 2) {                     op.icon(bitmapdescriptorfactory                             .defaultmarker(bitmapdescriptorfactory.hue_red));                  }                 map.addmarker(op);             }              if (markerpoints.size() >= 2) {                 latlng origin = markerpoints.get(0);                 latlng dest = markerpoints.get(1);                  // getting url google directions api                 string url = getdirectionsurl(origin, dest);                  downloadtask downloadtask = new downloadtask();                   downloadtask.execute(url);             }          }      }      private string getdirectionsurl(latlng origin, latlng dest) {          // origin of route         string str_origin = "origin=" + origin.latitude + ","                 + origin.longitude;          // destination of route         string str_dest = "destination=" + dest.latitude + "," + dest.longitude;          // sensor enabled         string sensor = "sensor=false";          // building parameters web service         string parameters = str_origin + "&" + str_dest + "&" + sensor;          // output format         string output = "json";          // building url web service         string url = "https://maps.googleapis.com/maps/api/directions/"                 + output + "?" + parameters;          return url;     }      /** method download json data url */     private string downloadurl(string strurl) throws ioexception {         string data = "";         inputstream istream = null;         httpurlconnection urlconnection = null;         try {             url url = new url(strurl);              // creating http connection communicate url             urlconnection = (httpurlconnection) url.openconnection();              // connecting url             urlconnection.connect();              // reading data url             istream = urlconnection.getinputstream();              bufferedreader br = new bufferedreader(new inputstreamreader(                     istream));              stringbuffer sb = new stringbuffer();              string line = "";             while ((line = br.readline()) != null) {                 sb.append(line);             }              data = sb.tostring();              br.close();          } catch (exception e) {             log.d("exception while downloading url", e.tostring());         } {             istream.close();             urlconnection.disconnect();         }         return data;     }      // fetches data url passed     private class downloadtask extends asynctask<string, void, string> {          // downloading data in non-ui thread         @override         protected string doinbackground(string... url) {              // storing data web service             string data = "";              try {                 // fetching data web service                 data = downloadurl(url[0]);             } catch (exception e) {                 log.d("background task", e.tostring());             }             return data;         }          // executes in ui thread, after execution of         // doinbackground()         @override         protected void onpostexecute(string result) {             super.onpostexecute(result);              parsertask parsertask = new parsertask();              // invokes thread parsing json data             parsertask.execute(result);          }     }      /** class parse google places in json format */     private class parsertask extends             asynctask<string, integer, list<list<hashmap<string, string>>>> {          // parsing data in non-ui thread         @override         protected list<list<hashmap<string, string>>> doinbackground(                 string... jsondata) {              jsonobject jobject;             list<list<hashmap<string, string>>> routes = null;              try {                 jobject = new jsonobject(jsondata[0]);                 directionsjsonparser parser = new directionsjsonparser();                  // starts parsing data                 routes = parser.parse(jobject);             } catch (exception e) {                 e.printstacktrace();             }             return routes;         }          // executes in ui thread, after parsing process         @override         protected void onpostexecute(list<list<hashmap<string, string>>> result) {             arraylist<latlng> points = null;             polylineoptions lineoptions = null;             markeroptions markeroptions = new markeroptions();              // traversing through routes             (int = 0; < result.size(); i++) {                 points = new arraylist<latlng>();                 lineoptions = new polylineoptions();                  // fetching i-th route                 list<hashmap<string, string>> path = result.get(i);                  // fetching points in i-th route                 (int j = 0; j < path.size(); j++) {                     hashmap<string, string> point = path.get(j);                      double lat = double.parsedouble(point.get("lat"));                     double lng = double.parsedouble(point.get("lng"));                     latlng position = new latlng(lat, lng);                      points.add(position);                 }                  // adding points in route lineoptions                 lineoptions.addall(points);                 lineoptions.width(2);                 lineoptions.color(color.red);              }              // drawing polyline in google map i-th route             map.addpolyline(lineoptions);         }     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.main, menu);         return true;     } } 

Comments