Android Google Maps v2-设置myLocation的缩放级别


104

可以使用新的Google Maps API v2更改myLocation的缩放级别吗?

如果设置了GoogleMap.setEnableMyLocation(true);,则会在地图上显示一个按钮以查找您的位置。

如果单击它,则地图将带您到您的位置并将其放大到某个级别。我可以将缩放比例更改为更大或更小吗?


1
您对mylocation按钮的缩放级别有任何想法吗?我想要那个价值。
Prashanth Debbadwar '16

Answers:


211

值得怀疑的是,您可以在单击时使用默认的myLocation标记对其进行更改。但是,如果您希望该应用在找到位置后自动放大您的位置,那么我会查看我对这个问题的回答

请注意,我提供的答案不会放大,但是如果您将onLocationChanged方法修改为类似于下面的方法,则可以选择任意缩放级别:

@Override
public void onLocationChanged(Location location) 
{
    if( mListener != null )
    {
        mListener.onLocationChanged( location );

        //Move the camera to the user's location and zoom in!
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 12.0f));
    }
}

146

您还可以使用:

mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );    

只需将缩放值更改为最小值= 2.0和最大值= 21.0之间的任何所需值。

API警告,并非所有位置都具有最大缩放值或接近最大缩放值的图块。

请参阅以获取有关中可用的缩放方法的更多信息CameraUpdateFactory


1
默认缩放级别是多少??
IgorGanapolsky

14是默认缩放级别
vin shaba

25

有位置-在新的GoogleMaps SDK中:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));

2
newLatLngZoom()和zoom()之间有很多其他答案已引用的区别吗?从最终用户的角度来看,在应用程序中,这些外观相同。
portfoliobuilder

15

与HeatfanJohn的解决方案略有不同,在这里我将缩放相对于当前缩放级别进行了更改:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));

15

以下是大概的缩放级别及其作用:

1: World
5: Landmass/continent
10: City
15: Streets
20: Buildings

因此您可以执行以下操作来缩放到街道级别(例如,注意下面的“ 15f”是街道级别):

 override fun onMapReady(googleMap: GoogleMap?) {
    googleMap?.mapType = GoogleMap.MAP_TYPE_NORMAL
    googleMap?.addMarker(MarkerOptions()
            .position(LatLng(37.4233438, -122.0728817))
            .title("cool place")

            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE)))

    googleMap?.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(37.4233438, -122.0728817), 15f))

注意:请注意,不同的位置可能具有不同的最大缩放级别。googleMap.maxZoomLevel如果要获得最大或最小缩放级别,请尝试使用。


12

在onMapReady()方法中

将zoomLevel更改为任何所需的值。

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));


2

您可以使用

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);

1

甚至我最近也有同样的查询。...有些上述setmaxzoom或map:cameraZoom =“ 13”都不起作用的原因所以我发现我使用的依赖关系很旧,请确保您对Google地图的依赖性是正确的,这是最新用法

compile 'com.google.android.gms:play-services:11.8.0' 

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); 这将没有动画效果。


0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

如果要保存缩放或一直获取它,则只需调用以下命令

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);

0

上面的大多数答案都已弃用,或者通过保留当前的纬度和经度来进行缩放,并且无法缩放到所需的确切位置。将以下代码添加到onMapReady()方法。

@Override
public void onMapReady(GoogleMap googleMap) {
    //Set marker on the map
    googleMap.addMarker(new MarkerOptions().position(new LatLng(0.0000, 0.0000)).title("Marker"));
    //Create a CameraUpdate variable to store the intended location and zoom of the camera
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(0.0000, 0.0000), 13);
    //Animate the zoom using the animateCamera() method
    googleMap.animateCamera(cameraUpdate);
}

0

我尝试使用“ mMap.animateCamera(CameraUpdateFactory.zoomTo(17.0f));” 但这对我没有用。所以我用这个动画放大了开始。

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.