20

Google Map API V2 - ユーザーが地図をスクロールしている間、マーカーを画面の中央に保持するにはどうすればよいですか?

私の目的は、ユーザーが場所を選択できるようにすることです。次のコードを使用してマーカーを追加します (これcom.example.mapdemoは Android SDK からのものです)。

mMap.addMarker(new MarkerOptions()
    .position(new LatLng(0, 0))
    .title("Marker"));

マーカーを画面の中央に保持し、その位置を取得するにはどうすればよいですか?

4

7 に答える 7

16

実際にマーカーを画面の真ん中に置いて簡単に浮かせるとは思えません。私の提案は、ユーザーをだますことです。ボタンのようにマーカー画像をマップに追加します。xml レイアウトを使用して、画面の中央に配置できます。次に、ユーザーが場所を選択すると、画面の中央から GPS 座標が取得されます。

補足として、マーカーをドラッグ可能にすることもできます。その後、ユーザーはマーカーをマップ上でドラッグできます。

mMap.addMarker(new MarkerOptions().position(coordinate)
                    .title("Your Title")
                    .snippet("Please move the marker if needed.")
                    .draggable(true)); 
于 2013-01-04T07:34:15.790 に答える
9

どうですか?

mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
        public void onCameraChange(CameraPosition arg0) {   
                mMap.clear();               
                mMap.addMarker(new MarkerOptions().position(arg0.target));
        }
});
于 2013-01-08T16:10:41.813 に答える
6

オプション1

ユーザーがマップを移動するとき、最良のオプションはマーカ​​ーを移動することだと思います...

googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
            @Override
            public void onCameraMove() {
                marker.setPosition(googleMap.getCameraPosition().target);//to center in map
            }
        });
//note marker is global

オプション 2

または単純な、レイアウトで、相対レイアウトでフラグメントを配置し、マーカーのアイコンの上に、そのマーカーが常にマップの中央にあると計算します...

画面のサイズによっては複雑だと思いますが、マーカーのたびに電話が移動するわけではありません...

于 2016-12-14T23:52:16.617 に答える
2

これは、実際には、マップの上にカスタムビューをオーバーレイすることで可能になります。Viewを拡張するクラスを作成し、ビューのdraw()メソッドとonTouchEvent()メソッドをオーバーライドして、マップの中央の上にマーカー(どのように見えるか)を描画することができます。ユーザーがマーカーを設定するときは、投影法を使用して、マーカーの画面上の位置を地図上のLatLongに変換します。次に、地図上に適切なマーカーを設定できます(これでジオロケーションに固定されます)。

上記からわかるように、これは最も単純なプロセスではありません。実装を容易にするために、doubleAのソリューションを使用することをお勧めします。

于 2013-01-06T21:40:40.600 に答える