Friday, 15 June 2012

android - how to make driving route from my location to any markers -



android - how to make driving route from my location to any markers -

i beginner in programming. tutorial driving route location destination. these tutorials not wanted.

link tutorials: http://wptrafficanalyzer.in/blog/driving-route-from-my-location-to-destination-in-google-maps-android-api-v2/

the question how driving route location custom marker.

googlemap map; arraylist<latlng> mmarkerpoints; double mlatitude=0; double mlongitude=0; textview tvdistanceduration; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.maps); tvdistanceduration = (textview) findviewbyid(r.id.tv_distance_time); // getting google play availability status int status = googleplayservicesutil.isgoogleplayservicesavailable(getbasecontext()); if(status!=connectionresult.success){ // google play services not available int requestcode = 10; dialog dialog = googleplayservicesutil.geterrordialog(status, this, requestcode); dialog.show(); }else { // google play services available // initializing mmarkerpoints = new arraylist<latlng>(); // getting reference supportmapfragment of activity_main supportmapfragment fm = (supportmapfragment)getsupportfragmentmanager().findfragmentbyid(r.id.map); // getting map supportmapfragment map = fm.getmap(); // enable mylocation button in map map.setmylocationenabled(true); // getting locationmanager object scheme service location_service locationmanager locationmanager = (locationmanager) getsystemservice(location_service); // creating criteria object retrieve provider criteria criteria = new criteria(); // getting name of best provider string provider = locationmanager.getbestprovider(criteria, true); // getting current location gps location location = locationmanager.getlastknownlocation(provider); if(location!=null){ onlocationchanged(location); } locationmanager.requestlocationupdates(provider, 20000, 0, this); // setting onclick event listener map map.setonmapclicklistener(new onmapclicklistener() { @override public void onmapclick(latlng point) { // map contain destination location if(mmarkerpoints.size()>=1){ fragmentmanager fm = getsupportfragmentmanager(); mmarkerpoints.clear(); map.clear(); latlng startpoint = new latlng(mlatitude, mlongitude); // draw marker @ current position drawmarker(startpoint); } // draws marker @ touched location drawmarker(mmarkerpoints.get(1)); // checks, whether start , end locations captured if(mmarkerpoints.size() >= 1){ latlng origin = mmarkerpoints.get(0); latlng dest = mmarkerpoints.get(1); // getting url google directions api string url = getdirectionsurl(origin, dest); downloadtask downloadtask = new downloadtask(); // start downloading json info google directions api 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; homecoming url; } /** method download json info url */ private string downloadurl(string strurl) throws ioexception{ string info = ""; 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 info 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); } info = sb.tostring(); br.close(); }catch(exception e){ log.d("exception while downloading url", e.tostring()); }finally{ istream.close(); urlconnection.disconnect(); } homecoming data; } /** class download info google directions url */ private class downloadtask extends asynctask<string, void, string>{ // downloading info in non-ui thread @override protected string doinbackground(string... url) { // storing info web service string info = ""; try{ // fetching info web service info = downloadurl(url[0]); }catch(exception e){ log.d("background task",e.tostring()); } homecoming 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 info parsertask.execute(result); } } /** class parse google directions in json format */ private class parsertask extends asynctask<string, integer, list<list<hashmap<string,string>>> >{ // parsing info 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 info routes = parser.parse(jobject); }catch(exception e){ e.printstacktrace(); } homecoming 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(); 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 map.addpolyline(lineoptions); } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); homecoming true; } private void drawmarker(latlng point){ mmarkerpoints.add(point); // creating markeroptions markeroptions options = new markeroptions(); // setting position of marker options.position(point); /** * start location, color of marker greenish , * end location, color of marker red. */ map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.381407, 106.855766)) .title("pt. andalan sumber rezeki").snippet("jln. ir. h. juanda, kp. bojong rt. 03/06 kel. batik jaya <br/> kec. sukma jaya depok <br/> phone : 0813 814 77771")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.361964, 106.775808)) .title("pt. solia mitra motor").snippet("jln. limo raya no.5 cinere depok <br/> phone : 0217540506")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.3845335,106.8285415)) .title("mahkota depok") .snippet("jln. raya margonda no.209 <br/> phone : 02177210208")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.111662, 106.911759)) .title("mahkota arif rahman hakim").snippet("jln. arif rahman hakim no.78 <br/> phone : 02177202260")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.451293, 106.798896)) .title("pt.suzuki citayam").snippet("jln. pabuaran raya no.44-46 kampung pintu air pabuaran <br/> phone : 02187990951")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.383348, 106.814409)) .title("pt. singgalang motor").snippet("jln. nusantara raya depok <br/> phone : 021 77212827")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.401883, 106.836572)) .title("pt. galaxy prima depok").snippet("jln. kemakmuran raya no.50 <br/> phone : 02177825282")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.3901018,106.8268545)) .title("pt. suzuki sem depok").snippet("jln. margonda raya no.27 <br/> phone : 0217764887")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.391512, 106.851940)) .title("suzuki dipa motor").snippet("<p>" +"jln. kejayaan raya" + "<br/> " + "phone : 021 77831015")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.3901018,106.8268545)) .title("pt. tugu gema motorindo").snippet("jln. akses ui no. 25 <br/> phone : (021) 8701111, (021) 8702222")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.3590335,106.8586754)) .title("pt. restu mahkota karya").snippet("jl. raya bogor km,29 no.18 cimanggis <br/> phone : 021 87708918")); map.addmarker(new markeroptions() .icon(bitmapdescriptorfactory.fromresource(r.drawable.marker)) .anchor(0.0f, 1.0f) // anchors marker on bottom left .position(new latlng(-6.3779722,106.8650424)) .title("suzuki cisalak").snippet("jalan raya bogor km.31 <br/> phone : 021 8722624")); } @override public void onlocationchanged(location location) { // draw marker, if destination location not set if(mmarkerpoints.size() < 2){ mlatitude = location.getlatitude(); mlongitude = location.getlongitude(); latlng point = new latlng(mlatitude, mlongitude); map.movecamera(cameraupdatefactory.newlatlng(point)); map.animatecamera(cameraupdatefactory.zoomto(12)); drawmarker(point); } } @override public void onproviderdisabled(string provider) { // todo auto-generated method stub } @override public void onproviderenabled(string provider) { // todo auto-generated method stub } @override public void onstatuschanged(string provider, int status, bundle extras) { // todo auto-generated method stub } }

thanks

try way,hope help solve problem.

string uri = "http://maps.google.com/maps?f=d&hl=es&saddr="+startinglatitude+","+startinglongitude+"&daddr="+endinglatitude+","+endinglongitude; intent intent = new intent(android.content.intent.action_view, uri.parse(uri)); intent.setclassname("com.google.android.apps.maps", "com.google.android.maps.mapsactivity"); startactivity(intent);

android google-maps-markers google-maps-android-api-2 google-maps-api-2 android-maps-v2

No comments:

Post a Comment