2016-12-29 71 views
1

我在Google地圖中繪製了折線,並且在折線被點擊時我想在折線中使用標記。那麼只有標記應該出現在折線的中間。如何在Google地圖Android中的折線中點繪製標記?

@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(); 
} 

上面的代碼只能在第一個點繪製,但我需要它在多段線中間。我怎樣才能做到這一點?

在此先感謝。

回答

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(); 
} 
+0

它不工作 –

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();