【发布时间】:2020-02-07 14:58:40
【问题描述】:
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
centerOnMapLocation(location,"Your location");
}
只有当我在模拟器中从extented controls设置位置时,即当用户的位置发生变化时,才应调用此方法onLocationChanged。
public void centerOnMapLocation(Location location, String title){
if(location!=null) {
LatLng userLocation = new LatLng(location.getLatitude(), location.getLongitude());
mMap.clear();
mMap.addMarker(new MarkerOptions().position(userLocation).title(title));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 12));
}
}
centerOnMapLocation 将相机移动到用户的位置。当我在模拟器中从extented controls 中单击设置位置 时,相机和标记将移动到新位置。没关系。但在那之后,当我尝试在地图内移动时,一旦我停止触摸屏幕,相机就会再次移回标记处。
基本上,当我在地图屏幕内滑动以在地图内移动时,只要我的滑动停止(意味着我停止触摸屏幕),相机就会再次移动到标记处。我希望标记保留在那里,并且我应该能够在地图内正常移动
为什么相机应该只在位置变化而不是地图屏幕变化时移动
【问题讨论】:
-
我想你可能没有意识到,在调用
removeUpdates()之前,onLocationChanged()通常会每秒继续执行一次,即使你的位置实际上并没有“改变”。 -
感谢您的回复。我得到了一个潜在的修复,我已经给出了答案。我尝试使用
removeUpdates(),但我无法将它正确插入到我的代码中,因为它一被调用就停止更新,但我稍后需要再次更新。请查看我的答案是否看起来不错,如果是,请投票,以便我了解您对它的认可,或者如果您有更好的解决方案,请给予。
标签: android android-maps-v2 android-maps