如何在Google地图Android中折线的中间点绘制标记?

时间:2016-12-29 05:52:46

标签: android google-maps

我在Google地图中绘制了一条折线,我想在点击折线时在折线中添加标记。然后只有标记应出现在折线的中间。

@Override
public void onPolylineClick(Polyline polyline) {
    double latitude = polyline.getPoints().get(0).latitude;
    double longitude = polyline.getPoints().get(0).longitude;
    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
    CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(new LatLng(latitude, longitude))
        .zoom(18).build();
}

使用上面的代码,标记仅在第一个点处绘制,但我需要在折线的中间。我怎么能这样做?

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以通过获取边界的中心来找到折线的中心。

我没有执行代码,但我希望它能正常工作。

public LatLng getPolylineCentroid(Polyline p) {

    LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for(int i = 0; i < p.getPoints().size(); i++){
        builder.include(p.getPoints().get(i));
    }

    LatLngBounds bounds = builder.build();

    return bounds.getCenter();
}

答案 1 :(得分:0)

您可以使用我在此解决方案中提出的extrapolate函数:How can I extrapolate farther along a road?

double middleDistance = SphericalUtil.computeLength(polyline.getPoints());

LatLng markerPosition = extrapolate(polyline.getPoints(), polyline.getPoints().get(0), middleDistance);

mMap.addMarker(new MarkerOptions().position(markerPosition).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
CameraPosition cameraPosition = new CameraPosition.Builder()
    .target(markerPosition)
    .zoom(18).build();