获取距离并在两个位置的android Google地图之间画线

时间:2018-09-09 11:57:09

标签: java android geolocation google-geolocation

我有一个可以打开地图并使用标记放大我的位置的应用 然后如果我在任何地方 longClick 将该位置保存在数据库中 一切正常,但我无法管理的一件事就是在两个位置标记之间画一条路径。

这是三个全局变量

 Location myLocation;
 LatLng onmaplongclicklastlatlng;
 private GoogleMap mMap;

mylocationLocationListener分配,而onmaplongclicklastlatlng由我长按地图上的任意位置分配。

在两个位置上都放置标记已完成,我已经有了要在其上画线的两个点。

我只需要在这两个位置之间划一条线(我的当前位置会在 myLocation 变量中定期更新)

每当我长按地图时,

onmaplongclicklastlatlng 都会更改。

整个代码已经完成,我有一个button我想用它来draw行 由于我可以通过此variables方法访问两个位置button,因此无需更改其他代码。

public void getLine(View view) {

    // need to draw a line here from user gps posiution to the marker location    
}

我尝试了许多教程,但由于某些原因它们无法正常工作,我们将不胜感激。

哦,最后但并非最不重要

onmaplongclicklastlatlng

是LatLng和

myLocation

是一个位置

但可以根据目的进行互换

ex. Location maplocation = new Location(onmaplongclicklastlatlng
.latitude, onmaplongclicklastlatlng.longitude);

Latlng myLatLng = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());

正如我所说,任何帮助将不胜感激。 并且让我知道是否还有其他需要编辑的问题。

2 个答案:

答案 0 :(得分:1)

要计算两个位置之间的准确距离,您必须使用Google Map Distance Matrix API。像下面那样构造您的网址。

https://maps.googleapis.com/maps/api/distancematrix/json?" +"origin=" + origin.latitude + "," + origin.longitude+ "&" +"destination=" + dest.latitude + "," + dest.longitude +"&sensor=false&units=metric&mode=driving" + "&" + key=YOUR_API_KEY

要在两个位置之间画线,您必须首先使用Google Map Direction Api,如下所示构造您的网址

https://maps.googleapis.com/maps/api/directions/json?" +"origin=" + origin.latitude + "," + origin.longitude+ "&" +"destination=" + dest.latitude + "," + dest.longitude +"&sensor=false&units=metric&mode=driving" + "&" + key=YOUR_API_KEY

在api调用上方,返回列表列表,将列表添加到折线中

 Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
                .clickable(true)
                .addAll(latlngList));

希望有帮助。

答案 1 :(得分:0)