[英]How to draw line between two Latlong points?
Using Polyline i can able to create a path between two points. 使用Polyline我可以在两点之间创建一条路径。
but when i am using these two points (Ahmedabad to New york) polyline is not create. 但当我使用这两点(艾哈迈达巴德到纽约)折线不是创造。 else it works if there is no SEA between two points. 否则,如果两点之间没有SEA,它就可以工作。
i'am getting issue when points are like 我喜欢积分问题
but in this case its working from Bhuj to Ahmedabad 但在这种情况下,它从普杰到艾哈迈达巴德工作
Finally I got the Answer how Ola and Uber app doing these.. 最后,我得到了答案奥拉和优步应用程序如何做这些..
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);
You can draw like below one 你可以像下面那样画画
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);
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());
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.