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

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

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

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

  • Google Play服务已过期。 需要3025100,但find2012110
  • 谷歌地图为我的位置自定义按钮
  • Android地图V2 - 为什么MAPS_RECEIVE权限
  • 在Google Maps API v2中更改标记大小
  • 打开街道地图工作离线android
  • 调用getLastKnownLocation时发生SecurityException
  • Android中的“debug.keystore”和“release.keystore”有什么区别?
  • 当在DialogActivity中使用MapFragment时会得到一个黑色叠加层
  • 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); 

    希望这可以帮助 !!