如何将两个标记之间的距离绑定到我的折线?

时间:2014-04-05 10:42:57

标签: android google-maps google-api google-maps-api-2 google-polyline

首先,我为我可怜的英语道歉。

我目前正在使用Android-app,我正在使用google api v2。我的谷歌地图上有2个标记,用.distance between方法计算它们之间的距离。然后我在标记之间画一条折线。

现在我想将距离绑定到我的折线。距离应在折线下方,如果我移动标记,距离仍应在折线下方。

2 个答案:

答案 0 :(得分:0)

此方法可以帮助您找到距离,它找到起点LatLng和终点之间的距离LatLng

public double CalculationByDistance(LatLng StartP, LatLng EndP) {
    int Radius=6371;//radius of earth in Km         
    double lat1 = StartP.latitude;
    double lat2 = EndP.latitude;
    double lon1 = StartP.longitude;
    double lon2 = EndP.longitude;
    double dLat = Math.toRadians(lat2-lat1);
    double dLon = Math.toRadians(lon2-lon1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
    Math.sin(dLon/2) * Math.sin(dLon/2);
    double c = 2 * Math.asin(Math.sqrt(a));
    double valueResult= Radius*c;
    double km=valueResult/1;
    DecimalFormat newFormat = new DecimalFormat("####");
    int kmInDec =  Integer.valueOf(newFormat.format(km));
    double meter=valueResult%1000;
    int  meterInDec= Integer.valueOf(newFormat.format(meter));
    Log.i("Radius Value",""+valueResult+"   KM  "+kmInDec+" Meter   "+meterInDec);

    return Radius * c;
}

你也可以试试这个:

Location locationA = new Location("location A");  

locationA.setLatitude(locationA.getLatitudeE6() / 1E6);  
locationA.setLongitude(locationA.getLongitudeE6() / 1E6);  

Location locationB = new Location("location B");  

locationB.setLatitude(locationB.getLatitudeE6() / 1E6);  
locationB.setLongitude(locationB.getLongitudeE6() / 1E6);  

double distance = locationA.distanceTo(locationB);

答案 1 :(得分:0)

这不容易做到,但肯定是可能的。

以下是步骤:

  • 计算每一行的中心
  • 对于该中心纬度,计算其下方50dp的点(使用Projection
  • 在该位置放置标记
  • 将标记图标设置为Bitmap,文字为
  • 每隔几毫秒收到OnCameraChangeListener.onCameraChangeHandler Runnable的电话时更新标记位置