2017-04-27 6 views
-1

Mit Polylinie Ich kann einen Pfad zwischen zwei Punkten erstellen.Wie zeichne Linie zwischen zwei Latlong Punkte?

, aber wenn ich diese beiden Punkte bin mit (Ahmedabad nach New York) Polylinie nicht. sonst funktioniert es, wenn kein SEA zwischen zwei Punkten ist.

i'am Problem bekommen, wenn Punkte sind wie

enter image description here

aber in diesem Fall von Bhuj nach Ahmedabad seine Arbeit enter image description here

Antwort

0

Schließlich bekam ich die Antwort, wie Ola und Uber App diese tun ..

enter image description here

ArrayList<LatLng> points = new ArrayList<LatLng>(); 
       PolylineOptions polyLineOptions = new PolylineOptions(); 
       points.add(new LatLng(from_latitude,from_longitude)); 
       points.add(new LatLng(to_latitude,to_longitude)); 
       polyLineOptions.width(7 * 1); 
       polyLineOptions.geodesic(true); 
       polyLineOptions.color(activity.getResources().getColor(R.color.black)); 
       polyLineOptions.addAll(points); 
       Polyline polyline = mMap.addPolyline(polyLineOptions); 
       polyline.setGeodesic(true); 
0

Sie können wie ziehen unter ein

PolylineOptions rectOptions = new PolylineOptions(); 
    LatLng polLatLng = null; 
    if (points.size() > 0) { 
     ArrayList<LatLng> pathPoint = new ArrayList<LatLng>(); 
     for (int k = 0; k < points.size(); k++) { 
      double polLat = points.get(k).latitude; 
      double polLng = points.get(k).longitude; 
      pathPoint.add(new LatLng(polLat, polLng)); 
      polLatLng = new LatLng(polLat, polLng); 
     } 
     double startLatitude = points.get(0).latitude; 
     double startLongitude = points.get(0).longitude; 
     double endLatitude = points.get(points.size() - 1).latitude; 
     double endLongitude = points.get(points.size() - 1).longitude; 
     LatLng start = new LatLng(startLatitude, startLongitude); 
     LatLng end = new LatLng(endLatitude, endLongitude); 

     mMap.addMarker(new MarkerOptions().position(start).title("start")); 
     mMap.addMarker(new MarkerOptions().position(end).title("end")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(polLatLng)); 
     mMap.animateCamera(CameraUpdateFactory.zoomTo(10)); 
     rectOptions.addAll(pathPoint); 
     rectOptions.width(10); 
     rectOptions.color(Color.BLUE); 
     mMap.addPolyline(rectOptions); 
0
solution 1: 

    private void showDirection(LatLng source, LatLng destination) { 

    Map<String, String> hashMap = new HashMap<String, String>(); 

    final String url = "http://maps.googleapis.com/maps/api/directions/json?origin=" 
      + source.latitude 
      + "," 
      + source.longitude 
      + "&destination=" 
      + destination.latitude 
      + "," 
      + destination.longitude 
      + "&sensor=false"; 
    new HttpRequester(activity, hashMap, StaticValues.ServiceCode.GET_ROUTE, true, 
      this); 
    Utils.showCustomProgressDialog(activity, 
      getString(R.string.text_getting_direction), false, null); 
} 


solution 2: 
private void build_retrofit_and_get_response(String type) { 

    String url = "https://maps.googleapis.com/maps/"; 

    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(url) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 

    RetrofitMaps service = retrofit.create(RetrofitMaps.class); 

    Call<Example> call = service.getDistanceDuration("metric", StartLocation.latitude + "," + StartLocation.longitude, 
      EndLocation.latitude + "," + EndLocation.longitude, type); 

    call.enqueue(new Callback<Example>() { 
     @Override 
     public void onResponse(Response<Example> response, Retrofit retrofit) { 

      try { 
       //Remove previous line from map 
       if (line != null) { 
        line.remove(); 
       } 
       // This loop will go through all the results and add marker 
on each location. 
       for (int i = 0; i < response.body().getRoutes().size(); i++) { 
        String distance = response.body().getRoutes().get(i).getLegs().get(i).getDistance().getText(); 
        String time = response.body().getRoutes().get(i).getLegs().get(i).getDuration().getText(); 
//   activity.setTitleActionBar("Distance:" + distance + ", Duration:" + time); 
        String encodedString = response.body().getRoutes().get(0).getOverviewPolyline().getPoints(); 
        List<LatLng> list = decodePoly(encodedString); 
        line = mGoogleMap.addPolyline(new PolylineOptions() 
          .addAll(list) 
          .width(10) 
          .color(Color.RED) 
          .geodesic(true) 
        ); 
       } 
      } catch (Exception e) { 
       Log.d("onResponse", "There is an error"); 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void onFailure(Throwable t) { 
      Log.d("onFailure", t.toString()); 
     } 
    }); 

} 
+0

type = "Fahren" oder "Walking" –

+1

Bruder verwenden 22,970385, 72,577455 und 41.029469, -77.618526 und zeichnen Pfad .. Sie werden nicht ausgegeben .. zuerst versuchen Sie es..dann sagen Sie mir –

+0

seine Arbeit für mich –

Verwandte Themen