让我说我在x位置。我的地图加载完美,并缩放到我的位置。现在我点击我在另一个位置创建的标记,让我们说位置y。相机会发生变化,并按照应有的位置转到y位置。 问题是,它在那里停留大约2-3秒然后回到我的位置(位置x)。 我怎样才能让它留在我想要的地方,直到我改回来? 这是我的代码的一部分,我认为我需要改变。 如果您需要更多信息,更多代码,请随时询问。
public void setUpMap() {
map.setMyLocationEnabled(true);
map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng l = new LatLng(location.getLatitude(), location.getLongitude());
map.animateCamera(CameraUpdateFactory.newLatLngZoom(l, 12));
}
});
答案 0 :(得分:0)
每次地图收到位置更新时,相机都会更新。要避免这种情况,只需删除OnMyLocationChangeListener
。
据我所知,您需要在首次加载地图时将地图置于您所在位置的中心位置。在这种情况下,您可以在第一次使用OnMyLocationChangeListener
调用时从地图中删除map.setOnMyLocationChangeListener(null);
:
map.setMyLocationEnabled(true);
map.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng l = new LatLng(location.getLatitude(), location.getLongitude());
map.animateCamera(CameraUpdateFactory.newLatLngZoom(l, 12));
map.setOnMyLocationChangeListener(null); // Remove the listener
}
});
另外,根据the documentation of GoogleMap.OnMyLocationChangeListener:
考虑到这一点不推荐使用此界面。
请改用com.google.android.gms.location.FusedLocationProviderApi。 FusedLocationProviderApi提供改进的定位和功率使用,并由“我的位置”蓝点使用。请参阅示例应用程序文件夹中的MyLocationDemoActivity,例如示例代码或Location Developer Guide。