我需要執行以下操作: 我在地圖上有一個標記,我需要更改它的位置。所以我嘗試了以下幾點:如何更改Android地圖上標記的位置v2
MarkerOptions a = new MarkerOptions()
.position(new LatLng(50,6)));
map.addMarker(a);
a.position(new LatLng(50,5));
其中map是一個GoogleMap
。我想我必須刷新地圖或平等嗎?
我需要執行以下操作: 我在地圖上有一個標記,我需要更改它的位置。所以我嘗試了以下幾點:如何更改Android地圖上標記的位置v2
MarkerOptions a = new MarkerOptions()
.position(new LatLng(50,6)));
map.addMarker(a);
a.position(new LatLng(50,5));
其中map是一個GoogleMap
。我想我必須刷新地圖或平等嗎?
找到了解決辦法,需要做的是這樣的:
MarkerOptions a = new MarkerOptions()
.position(new LatLng(50,6)));
Marker m = map.addMarker(a);
m.setPosition(new LatLng(50,5));
有一個在谷歌地圖V2演示應用程序移動標記。在文件adt-bundle-linux/sdk/extras/google/google_play_services/samples/maps/src/com/example/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);
}
}
}
});
}
此代碼會將標記從一個地址點動畫到另一個點。
什麼是'mGoogleMapObject'? – 2017-01-24 18:37:30
StackOverflow上的大部分答案建議使用remove()
刪除標記,然後使用addMarker
創建一個新標記。不要這樣做,只需將標記保存在Marker
類型變量中,然後更新其位置。
MarkerOptions a = new MarkerOptions().position(new LatLng(50,6)));
myMarker = mGoogleMap.addMarker(a);
然後,而不是刪除並重新創建一個標記,只需使用
myMarker.setPosition(newLatLng);
希望這有助於!
但m.setPosition不更新地圖上的標記! – dvrm 2013-06-12 10:30:53
@dvrm我檢查了它,它改變了地圖上標記的位置。更新是什麼意思? – arniotaki 2014-07-18 09:08:49
在這段代碼中,舊標記在哪裏?你正在創建一個新的... – mischka 2014-10-30 17:26:38