32

次のことを行う必要があります: マップ上にマーカーがあり、その位置を変更する必要があります。だから私は次のことを試しました:

MarkerOptions a = new MarkerOptions()
            .position(new LatLng(50,6)));
        map.addMarker(a);
        a.position(new LatLng(50,5));

map はGoogleMapです。マップを更新する必要があると思いますか、それとも同等ですか?

4

4 に答える 4

23

Googleマップv2デモアプリでマーカーを移動する例が1つあります..ファイル内adt-bundle-linux/sdk/extras/google/google_play_services/samples/maps/src/com/exa‌​mple/mapdemo/MarkerDemoActivity.java(4.2.2の例)

マーカーを移動するコードは次のとおりです。

public void animateMarker(final Marker marker, final LatLng toPosition, final boolean hideMarker) {
    final Handler handler = new Handler();
    final long start = SystemClock.uptimeMillis();
    Projection proj = mGoogleMapObject.getProjection();
    Point startPoint = proj.toScreenLocation(marker.getPosition());
    final LatLng startLatLng = proj.fromScreenLocation(startPoint);
    final long duration = 500;

    final Interpolator interpolator = new LinearInterpolator();

    handler.post(new Runnable() {
        @Override
        public void run() {
            long elapsed = SystemClock.uptimeMillis() - start;
            float t = interpolator.getInterpolation((float) elapsed
                    / duration);
            double lng = t * toPosition.longitude + (1 - t)
                    * startLatLng.longitude;
            double lat = t * toPosition.latitude + (1 - t)
                    * startLatLng.latitude;
            marker.setPosition(new LatLng(lat, lng));

            if (t < 1.0) {
                // Post again 16ms later.
                handler.postDelayed(this, 16);
            } else {
                if (hideMarker) {
                    marker.setVisible(false);
                } else {
                    marker.setVisible(true);
                }
            }
        }
    });
}

このコードは、マーカーをあるジオポイントから別のジオポイントにアニメーション化します。

于 2013-04-09T15:22:16.840 に答える
17

StackOverflow に関する回答のほとんどは、 を使用remove()してマーカーを削除し、 を使用して新しいマーカーを作成することを提案していaddMarkerます。その代わりに、マーカーを型変数に一度保存してから、Markerその場所を更新します。

MarkerOptions a = new MarkerOptions().position(new LatLng(50,6))); 
myMarker = mGoogleMap.addMarker(a);

そして、マーカーを削除して再作成する代わりに、単に使用します

myMarker.setPosition(newLatLng);  

お役に立てれば !!

于 2016-12-08T10:50:24.063 に答える