3

v2 APIでターゲットポイントを含めるのに十分なだけズームしながら、ユーザーがいる場所を中心とするレーダースクリーンのようなものが欲しいです。今、私は使用しています

bounds = new LatLngBounds.Builder().include(destPos)
                .include(yourPos).build();
        map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));

ただし、これは 2 つの点の間のある点に集中し、両方を含むようにズームします。私がやりたいことをこれほど簡単に行う方法はありますか?または、多かれ少なかれゼロから始めて、いくつかの計算を行う必要がありますか (たとえば、2 点間の距離を計算し、LatLngBounds の緯度/経度を計算して、ユーザーが定義された長方形の中心にあり、長方形の端が含まれるようにします)。目的地 -- マップ/画面のサイズを考慮して)?

ここに私が持っているものがあります:

ここに画像の説明を入力

ここに私が欲しいものがあります:

ここに画像の説明を入力

4

3 に答える 3

1

カメラのターゲット (マップの中心) を変更せずに、すべてのマーカーを含むようにズームします。

LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markers) {
    builder.include(marker.getPosition());
}
LatLngBounds bounds = builder.build();

LatLng currentLoc = _googleMapView.getCameraPosition().target;

//make sure that centre location doesn't change
double deltaLat = Math.max(Math.abs(bounds.southwest.latitude - currentLoc.latitude),
                Math.abs(bounds.northeast.latitude - currentLoc.latitude));

double deltaLon = Math.max(Math.abs(bounds.southwest.longitude - currentLoc.longitude),
                Math.abs(bounds.northeast.longitude - currentLoc.longitude));

LatLngBounds.Builder displayBuilder = new LatLngBounds.Builder();
displayBuilder.include(currentLoc); //not necessary but hey
displayBuilder.include(new LatLng(currentLoc.latitude + deltaLat, currentLoc.longitude + deltaLon));
displayBuilder.include(new LatLng(currentLoc.latitude - deltaLat, currentLoc.longitude - deltaLon));

_googleMapView.moveCamera(CameraUpdateFactory.newLatLngBounds(displayBuilder.build(), 0));
于 2014-12-09T07:23:56.377 に答える