27

私は Android Google マップ v2 でマップ クラスタリングを行っています。マーカーをあるジオポイントから別のジオポイントにアニメーション化したいだけです。Google マップ v2 でマーカーを移動する方法はありますか?

4

5 に答える 5

56

Playライブラリのサンプルに、Googleマップv2のデモアプリでマーカーを動かす例が1つあります!!

調べてみました!! ここにマーカーを移動するためのコード: -- >

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

それがすべての人を助けることを願っています!!

于 2012-12-17T10:08:35.220 に答える
6

私はこのようにしました:

private Marker marker;

Google マップマーカー追加する際:

if(marker!=null){
   marker.remove();
 }

LatLng mLatLng = new LatLng(Your_Latitude, Your_Longitude);

marker = mMapHistory.addMarker(new MarkerOptions().position(mLatLng).title("My Title").snippet("My Snippet").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));

この最も簡単な方法がお役に立てば幸いです。

于 2015-07-25T15:49:58.957 に答える
4

これを試してください:

    private static void addMarkerWithCameraZooming(Context ctx, GoogleMap googleMap, double latitude, double longitude, String title, boolean dragabble) {
            LatLng current_latlng = new LatLng(latitude, longitude);
            googleMap.addMarker(new MarkerOptions().position(current_latlng)
                    .title(title)
                    .snippet(getLocality(current_latlng, ctx))
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.person_marker))
                    .draggable(dragabble)
                              );
            CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latitude, longitude)).zoom(12).tilt(30).build();
            googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }

mGoogleMap.setOnMarkerDragListener(new OnMarkerDragListener() {
            @Override
            public void onMarkerDragStart(Marker markerDragStart) {
                // TODO Auto-generated method stub
                if (BuildConfig.DEBUG)
                Log.i("Marker drag", "start");
            }

            @Override
            public void onMarkerDragEnd(Marker markerDragEnd) {
                if (BuildConfig.DEBUG)
                    Log.i("Marker drag", "start");
            }

            @Override
            public void onMarkerDrag(Marker markerDrag) {
                if (BuildConfig.DEBUG)
                    Log.i("Marker drag", "start");
            }
        });
于 2014-07-04T13:15:36.693 に答える
1

こんにちは、私は同じ問題を抱えていました。ここで私の投稿Google Maps Android api v2 と現在の場所

Marker の remove() メソッドを使用して、新しいマーカーで古いマーカーを削除できます。私はそれがあなたが必要とするものであることを願っています

于 2012-12-12T18:39:49.317 に答える