我试图通过在我移动时将点之间的距离相加来计算折线的长度。
我想要使用这种方法:
distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)
我可以在endLat&中放置location.getLatitude()和location.getLongitude()。直立。
我将所有这些放在onLocationChanged(位置位置){}
如何从上次调用onLocationChanged(位置位置)时保存位置,并将其用作startLatitude / Longitude。
答案 0 :(得分:1)
有一个global temp variable
来保存之前的位置更新。如果您需要多个位置,您还可以使用列表。
private Locaction previous;
@Override
public void onLocationChange(Location location) {
...
// if its the first location update temp is null!
if (previous != null) {
Location.distanceBetween(
previous.getLatitude(),
previous.getLongitude(),
location.getLatitude(),
location.getLongitude(),
results);
}
// hold the location
previous = location;
...
}
答案 1 :(得分:0)
使用Google Maps Directions API。您需要通过HTTP请求指示。您可以直接从Android或通过自己的服务器执行此操作。
例如,从蒙特利尔到多伦多的路线:
获取http://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&sensor=false 你最终会得到一些JSON。在路线[]。legs []。距离中,你会得到一个像这样的物体:
"legs" : [
{
"distance" : {
"text" : "542 km",
"value" : 542389
},