2017-10-10 4 views
2

絵には千語以上の言葉が書かれているので、私は貧弱なGimpスキルを使って下のスケッチを作成しました。Google Maps Android周辺のマーカーが境界外にあることを示す矢印をどのように表示しますか?

enter image description here

真ん中のアイコンは、ユーザの現在位置と周りのマーカーは近くの場所です。黒い四角は地図上で現在のズームレベルで表示できる内容を示していますが、これは2つの場所のみを示しています。

だから私の質問は次のとおりです。

は、ユーザーが画面上にちょうど見えるエリア外の近くの場所があることを確認することができるように外側の画面領域の指標のいくつかの種類を表示するには、任意の組み込みの方法はあります現時点では。これらのインジケータが、正方形内に表示されていないが、指定された半径内に表示されているマーカーを表示できればいいです。

組み込みの方法がない場合、これを解決するにはどうすればよいですか?

+0

このような組み込み方法はありません。しかし、マーカーの座標を知っていれば、それを実装することができます:MapViewの 'onDraw'をオーバーライドする(または' MapView'の上に 'View'を追加する)と、いくつかの最も近い外側のマーカーを示す矢印を描画します。 'onMapLoaded()'メソッドでそれらを更新してください。 –

答えて

0

LatLngBounds.Builder;SphericalUtilを使用してください。 ここがその例です。

double radius = 1000; // 1km distance. 
LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
double distance = SphericalUtil.computeDistanceBetween(currentPosition, marker.getPosition()); 
if (distance < radius) { 
    // include the marker within the 1km distance. 
    builder.include(marker.getPosition()); 
} 
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 19)); 

を使用するように build.gradleコンパイル 'com.google.maps.android:android-maps-utils:0.5'を追加することを忘れないでください

SphericalUtil

+0

Jerrolに感謝します。しかし、私はあなたのコードを読んで、それはちょうど画面上の指定された半径内のすべての場所を表示する境界を計算します。これは私が望むものではありません。私はズームレベルを維持し、外側の画面に何らかの種類の記号(二重矢印)を表示して、彼がその方向に動くか、ズームレベルを自分で調整することをユーザーに示すために、マーカーを表示します/ 場所。 – dynamokaj

+0

OK、地図の現在のカメラのズームレベルを知ることができますか? – Jerrol

+0

ズームレベルは、ユーザーが動的に決定します。彼はズームアウトレベルを調整するためにピンチアウトすることができます。だから多分、私たちは半径を飛ばすだけで、画面の境界の外にあるすべてのマーカーが二重矢印アイコンで示されるべきだと言います。それで、SphericUtilを使ってあなたの素敵な計算を使って、それらがあまりにも遠い場合には、それらのいくつかをフィルタリングすることができます。 – dynamokaj

関連する問題