我已经制作了一个Android应用程序,我正在显示用户的当前位置。
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
if (currLocationMarker != null) {
currLocationMarker.remove();
}
//Place current location marker
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Current Position");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
currLocationMarker = mGoogleMap.addMarker(markerOptions);
mGoogleMap.animateCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(),location.getLongitude()) , 6.0f) );
}
它给我带有标记的当前位置,但问题是每当我尝试从当前位置缩小时,在几秒钟内它再次聚焦到同一位置(当前),所以我无法看到我的其他点(标记) )在地图上。
如何在Google地图中停用此自动放大功能?
答案 0 :(得分:2)
仅在第一次将相机置于当前位置:
private boolean firstLoad = true;
在onLocationChanged
上:
if (firstLoad) {
mGoogleMap.animateCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(),location.getLongitude()) , 6.0f) );
firstLoad = false;
}
答案 1 :(得分:1)
您应该首次使用animateCamera方法。您可以使用布尔值仅调用一次。全局声明一个布尔值并使其为false,一旦调用此方法,将其转为true,在调用此cameraAnimate方法之前检查布尔值是否为假,然后仅使用它。
答案 2 :(得分:1)
声明一个全局布尔标志
boolean isFisrtTime = true;
替换
mGoogleMap.animateCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(),location.getLongitude()) , 6.0f) );
与
if(isFisrtTime){
mGoogleMap.animateCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(),location.getLongitude()) , 6.0f) );
isFisrtTime = false; //this is will work at start only
}
答案 3 :(得分:0)
您的代码是否在onMapReady
方法上调用了?
如果不考虑移动那里。
我认为您在animateCamera
中呼叫onLocationChanged
,并且每次更新位置时都会调用代码,并且地图会重新聚焦到您的位置。