google maps - Is there any limit to drawing path using Geocoder (Android)? -


i able draw path between 2 locations, if distance long - more 300 kilometers - path not drawn completely.

i using code below in order draw path:

class mapoverlay extends com.google.android.maps.overlay {     road mroad;     arraylist<geopoint> mpoints;      public mapoverlay(road road, mapview mv) {             mroad = road;             if (road.mroute.length > 0) {                     mpoints = new arraylist<geopoint>();                     (int = 0; < road.mroute.length; i++) {                             mpoints.add(new geopoint((int) (road.mroute[i][1] * 1000000),                                             (int) (road.mroute[i][0] * 1000000)));                     }                     int movetolat = (mpoints.get(0).getlatitudee6() + (mpoints.get(                                     mpoints.size() - 1).getlatitudee6() - mpoints.get(0)                                     .getlatitudee6()) / 2);                     int movetolong = (mpoints.get(0).getlongitudee6() + (mpoints.get(                                     mpoints.size() - 1).getlongitudee6() - mpoints.get(0)                                     .getlongitudee6()) / 2);                     geopoint moveto = new geopoint(movetolat, movetolong);                      mapcontroller mapcontroller = mv.getcontroller();                     mapcontroller.animateto(moveto);                     mapcontroller.setzoom(8);             }     }      @override     public boolean draw(canvas canvas, mapview mv, boolean shadow, long when) {             super.draw(canvas, mv, shadow);             drawpath(mv, canvas);             return true;     }      public void drawpath(mapview mv, canvas canvas) {             int x1 = -1, y1 = -1, x2 = -1, y2 = -1;             paint paint = new paint();             paint.setcolor(color.green);             paint.setstyle(paint.style.stroke);             paint.setstrokewidth(3);             (int = 0; < mpoints.size(); i++) {                     point point = new point();                     mv.getprojection().topixels(mpoints.get(i), point);                     x2 = point.x;                     y2 = point.y;                     if (i > 0) {                             canvas.drawline(x1, y1, x2, y2, paint);                     }                     x1 = x2;                     y1 = y2;             }     } 

}

first of all, should using google maps api v2 instead of old deprecated v1 api

in activity, create google map , polyline references:

public class mapsactivity extends appcompatactivity implements onmapreadycallback{      private googlemap mmap;     polyline line;     //...... 

first define waypoint list:

list<latlng> latlngwaypointlist = new arraylist<>(); 

get route, draw polyline route, , draw waypoint markers:

class getdirectionsasync extends asynctask<latlng, void, list<latlng>> {     @override     protected void onpreexecute() {         super.onpreexecute();     }      @override     protected list<latlng> doinbackground(latlng... params) {            list<latlng> route = new arraylist<>();            //populate route......            return route;     }      @override     protected void onpostexecute(list<latlng> route) {          if (route == null) return;          if (line != null){             line.remove();         }          polylineoptions options = new polylineoptions().width(5).color(color.magenta).geodesic(true);         (int = 0; < pointslist.size(); i++) {             latlng point = route.get(i);             //if point waypoint, add list             if (iswaypoint(i)) {                 latlngwaypointlist.add(point);             }              options.add(point);         }         //draw route:         line = mmap.addpolyline(options);          //draw waypoint markers:         (latlng waypoint : latlngwaypointlist) {             mmap.addmarker(new markeroptions().position(new latlng(waypoint.latitude, waypoint.longitude))                     .title("waypoint").icon(bitmapdescriptorfactory                             .defaultmarker(bitmapdescriptorfactory.hue_violet)));         }      } } 

here placeholder implementation of iswaypoint():

public boolean iswaypoint(int i) {     //replace implementation     if (i % 17 == 0) {         return true;     }     return false; } 

result route west coast east coast, 2500 miles:

enter image description here

result of smaller route:

enter image description here

note i'm using google directions api in example in order make route snap roads. full example of how use google directions api, see here: https://stackoverflow.com/a/32940175/4409409


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -