私は Android Google マップ v2 でマップ クラスタリングを行っています。マーカーをあるジオポイントから別のジオポイントにアニメーション化したいだけです。Google マップ v2 でマーカーを移動する方法はありますか?
質問する
71270 次
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 に答える