java - Driving distance and travel time google maps V2 error -


i have code in java, code error, , code driving distance , travel time duration between 2 locations in google map android api v2 :

protected void oncreate(bundle savedinstancestate) {      super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);          try {         initilizemap();          tvdistanceduration = (textview) findviewbyid(r.id.tv_distance_time);         // initializing         markerpoints = new arraylist<latlng>();          // getting reference supportmapfragment of activity_main         supportmapfragment fm = (supportmapfragment)getsupportfragmentmanager().findfragmentbyid(r.id.map);          // getting map supportmapfragment         googlemap = fm.getmap();          // enable mylocation button in map         googlemap.setmylocationenabled(true);          googlemap.setonmapclicklistener(new onmapclicklistener() {              public void onmapclick(latlng point) {                 // todo auto-generated method stub                 // 2 locations                 if(markerpoints.size()>1){                     markerpoints.clear();                     googlemap.clear();                 }                  // adding new item arraylist                 markerpoints.add(point);                  // creating markeroptions                 markeroptions options = new markeroptions();                  // setting position of marker                 options.position(point);                  /**                  * start location, color of marker green ,                  * end location, color of marker red.                  */                  if(markerpoints.size()==1){                      options.icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_green));                  }else if(markerpoints.size()==2){                      options.icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_red));                  }                   googlemap.addmarker(options);                // checks, whether start , end locations captured                  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();                       // start downloading json data google directions api                      downloadtask.execute(url);                  }             }         });          //coding map          googlemap.setmaptype(googlemap.map_type_normal);          googlemap.setmylocationenabled(true);         googlemap.getuisettings().setzoomcontrolsenabled(false);         googlemap.getuisettings().setmylocationbuttonenabled(true);         googlemap.getuisettings().setcompassenabled(true);         googlemap.getuisettings().setrotategesturesenabled(true);         googlemap.getuisettings().setzoomgesturesenabled(true);         googlemap.getmylocation();          double latitude = -6.941830;         double longitude = 107.628480;                markeroptions marker = new markeroptions().position(                     new latlng(latitude, longitude))                     .title("i'm here");              log.e("random", "> " + latitude + ", "                     + longitude);                  marker.icon(bitmapdescriptorfactory                         .defaultmarker(bitmapdescriptorfactory.hue_azure));             googlemap.addmarker(marker);              //setting zoom level                 cameraposition cameraposition = new cameraposition.builder()                         .target(new latlng(latitude,                                 longitude)).zoom(16).build();                  googlemap.animatecamera(cameraupdatefactory                         .newcameraposition(cameraposition));        } catch (exception e) {         e.printstacktrace();     }      //coding slide atau drawable      mtitle = mdrawertitle = gettitle();      // load slide menu item     navmenutitles = getresources().getstringarray(r.array.nav_drawer_items);      // ngambil nav drawer icons drawer resources     navmenuicons = getresources()             .obtaintypedarray(r.array.nav_drawer_icons);      mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);     mdrawerlist = (listview) findviewbyid(r.id.list_slidermenu);      navdraweritems = new arraylist<navdraweritem>();       // home     navdraweritems.add(new navdraweritem(navmenutitles[0], navmenuicons.getresourceid(0, -1)));     // kereta     navdraweritems.add(new navdraweritem(navmenutitles[1], navmenuicons.getresourceid(1, -1)));     // bis     navdraweritems.add(new navdraweritem(navmenutitles[2], navmenuicons.getresourceid(2, -1)));     // pesawat     navdraweritems.add(new navdraweritem(navmenutitles[3], navmenuicons.getresourceid(3, -1)));     // kapal laut     navdraweritems.add(new navdraweritem(navmenutitles[4], navmenuicons.getresourceid(4, -1)));     // tempat/place     navdraweritems.add(new navdraweritem(navmenutitles[5], navmenuicons.getresourceid(5, -1)));     //     navdraweritems.add(new navdraweritem(navmenutitles[6], navmenuicons.getresourceid(6, -1)));       navmenuicons.recycle();      mdrawerlist.setonitemclicklistener(new slidemenuclicklistener());      // setting nav drawer list adapter     adapter = new navdrawerlistadapter(getapplicationcontext(),             navdraweritems);     mdrawerlist.setadapter(adapter);      // enabling action bar app icon , behaving toggle button     getactionbar().setdisplayhomeasupenabled(true);     getactionbar().sethomebuttonenabled(true);      mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout,             r.drawable.ic_drawer,             r.string.app_name,             r.string.app_name     ) {         public void ondrawerclosed(view view) {             getactionbar().settitle(mtitle);             // buat show             invalidateoptionsmenu();         }          public void ondraweropened(view drawerview) {             getactionbar().settitle(mdrawertitle);             // buat hide             invalidateoptionsmenu();         }     };     mdrawerlayout.setdrawerlistener(mdrawertoggle);      if (savedinstancestate == null) {         displayview(0);     }    }    private class slidemenuclicklistener implements  listview.onitemclicklistener {      @override      public void onitemclick(adapterview<?> parent, view view, int position,      long id) {          // buat display          displayview(position);      }  }   @override     public boolean oncreateoptionsmenu(menu menu) {         menuinflater inflater = getmenuinflater();         inflater.inflate(r.menu.main, menu);          return super.oncreateoptionsmenu(menu);     }      @override     public boolean onoptionsitemselected(menuitem item) {         if (mdrawertoggle.onoptionsitemselected(item)) {             return true;         }         switch (item.getitemid()) {         case r.id.action_help:             return true;         case r.id.action_refresh:             return true;         case r.id.action_settings:             return true;         case r.id.action_search:             return true;         default:             return super.onoptionsitemselected(item);         }     }      @override     public boolean onprepareoptionsmenu(menu menu) {         boolean draweropen = mdrawerlayout.isdraweropen(mdrawerlist);         menu.finditem(r.id.action_settings).setvisible(!draweropen);         return super.onprepareoptionsmenu(menu);     }      private void displayview(int position) {         fragment fragment = null;         switch (position) {         case 0:             fragment = new homefragment();             break;         case 1:             fragment = new keretaapifragment();             break;         case 2:             fragment = new bisfragment();             break;         case 3:             fragment = new pesawatfragment();             break;         case 4:             fragment = new kapallautfragment();             break;         case 5:             fragment = new placefragment();             break;         case 6:             fragment = new aboutfragment();             break;          default:             break;         }          if (fragment != null) {             fragmentmanager fragmentmanager = getfragmentmanager();             fragmentmanager.begintransaction()                     .replace(r.id.frame_container, fragment).commit();              mdrawerlist.setitemchecked(position, true);             mdrawerlist.setselection(position);             settitle(navmenutitles[position]);             mdrawerlayout.closedrawer(mdrawerlist);         } else {             log.e("mainactivity", "gagal memuat");         }     }      @override     public void settitle(charsequence title) {         mtitle = title;         getactionbar().settitle(mtitle);     }      @override     protected void onpostcreate(bundle savedinstancestate) {         super.onpostcreate(savedinstancestate);         mdrawertoggle.syncstate();     }      @override     public void onconfigurationchanged(configuration newconfig) {         super.onconfigurationchanged(newconfig);         mdrawertoggle.onconfigurationchanged(newconfig);     }   @override protected void onresume() {     super.onresume();     initilizemap(); }  private void initilizemap() {     if (googlemap == null) {         googlemap = ((mapfragment) getfragmentmanager().findfragmentbyid(                 r.id.map)).getmap();          // cek map status, bisa dubuat / tidak         if (googlemap == null) {             toast.maketext(getapplicationcontext(),                     "maaf maps anda gagal dimuat \n"+                     "mungkin karena koneksi anda lelet :)", toast.length_short)                     .show();         }     } }  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());     }finally{         istream.close();         urlconnection.disconnect();     }     return data; }  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);     } }  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     @suppresswarnings("unused")     protected void onpostexecute(list<list<hashmap<string, string>>> result) {         arraylist<latlng> points = null;         polylineoptions lineoptions = null;         markeroptions markeroptions = new markeroptions();         string distance = "";         string duration = "";          if(result.size()<1){             toast.maketext(getbasecontext(), "no points", toast.length_short).show();             return;         }          // traversing through routes         for(int i=0;i<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             for(int j=0;j<path.size();j++){                 hashmap<string,string> point = path.get(j);                  if(j==0){    // distance list                     distance = (string)point.get("distance");                     continue;                 }else if(j==1){ // duration list                     duration = (string)point.get("duration");                     continue;                 }                  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);         }          tvdistanceduration.settext("distance:"+distance + ", duration:"+duration);          // drawing polyline in google map i-th route         googlemap.addpolyline(lineoptions);     } } 

and error in:

supportmapfragment fm = (supportmapfragment)getsupportfragmentmanager().findfragmentbyid(r.id.map);

error information "the method getsupportfragmentmanager() undefined type mainactivity" please me

i guess mainactivity extends activity instead of fragment activity.

also have

initilizemap(); 

in have

googlemap = ((mapfragment) getfragmentmanager().findfragmentbyid(             r.id.map)).getmap(); 

while have

supportmapfragment fm = (supportmapfragment)getsupportfragmentmanager().findfragmentbyid(r.id.map);      // getting map supportmapfragment googlemap = fm.getmap(); 

you initializing map object twice. once use mapfragment , use supportmapfragment.

to fix

check min sdk version in manifest. if below 11 extend fragmentactivity , use supportmapfragment.

secondly check availability of google play services , there no need initialize map object twice.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -