118

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

如果您设置GoogleMap.setEnableMyLocation(true);,您会在地图上找到一个按钮来查找您的位置。

如果您单击它,那么地图会将您带到您的位置并将其放大到一定程度。我可以将此缩放更改为更少或更多吗?

4

13 回答 13

233

您是否可以使用默认的 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));
    }
}
于 2012-12-18T15:43:03.537 回答
163

您还可以使用:

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

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

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

有关. _ _CameraUpdateFactory

于 2013-03-19T16:45:48.380 回答
28

带位置 - 在新的 GoogleMaps SDK 中:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
于 2015-10-13T10:14:57.887 回答
21

以下是大概的缩放级别和它们的作用:

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如果您想获得最大或最小缩放级别,请尝试使用。

于 2018-06-15T08:27:40.470 回答
15

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

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
于 2015-06-30T16:22:59.190 回答
13

在 onMapReady() 方法中

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

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
于 2018-01-28T13:44:46.753 回答
2

你只需要在 maps_activity.xml 中写一行

map:cameraZoom="13"

我希望这能解决你的问题......

于 2018-01-28T13:38:55.740 回答
2

您可以使用

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
于 2018-10-07T10:57:09.583 回答
1

即使我最近也有同样的查询....有些上面提到的 setmaxzoom 或 map:cameraZoom="13" 都没有工作所以我发现我使用的依赖是旧的,请确保您对谷歌地图的依赖是正确的这是最新的使用这个

compile 'com.google.android.gms:play-services:11.8.0' 
于 2018-03-07T12:51:43.903 回答
1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); 这是不会有动画效果的。

于 2019-10-16T08:52:09.390 回答
1

我试过“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);
于 2020-05-04T20:25:52.247 回答
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);
于 2017-09-14T07:00:34.777 回答
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);
}
于 2020-02-17T13:17:02.250 回答