在谷歌地图中禁用自动缩放功能

时间:2017-04-10 11:45:57

标签: android google-maps

我已经制作了一个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地图中停用此自动放大功能?

4 个答案:

答案 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,并且每次更新位置时都会调用代码,并且地图会重新聚焦到您的位置。