如何在Android Map v2中更改标记的位置

我需要做以下工作:我在地图上有一个标记,我需要改变它的位置。 所以我尝试了以下几点:

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

其中map是一个GoogleMap 。 我想我必须刷新地图或平等吗?

Solutions Collecting From Web of "如何在Android Map v2中更改标记的位置"

find解决scheme,需要这样做:

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

在google map v2 demo app中有一个移动标记的例子。在文件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); } } } }); } 

这段代码会将标记从一个地址点animation到另一个地点点。

StackOverflow上的大多数答案build议使用remove()移除标记,然后使用addMarker创build一个新标记。 而不是这样做,只需将标记一次保存在Markertypesvariables中,然后更新其位置。

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

然后,而不是删除和重新创build一个标记,只需使用

 myMarker.setPosition(newLatLng); 

希望这可以帮助 !!