Android Google Maps v2 - set zoom level for myLocation

Is it possible to change the zoom level for myLocation with the new Google Maps API v2?

If you set GoogleMap.setEnableMyLocation(true);, you get a button on the map to find your location.

If you click on it, then the map will bring you to your location and zoom it in to some level. Can I change this zoom to be less or more?

201319 次浏览

这是值得怀疑的,你可以改变它的点击与默认的 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));
}
}

你亦可使用:

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

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

API 警告说,并非所有的位置都有最大缩放或接近最大缩放的贴片。

See 这个 for more information about zoom methods available in the CameraUpdateFactory.

与 HeatfanJohn 的解决方案略有不同,我将变焦相对于当前的变焦级别进行了更改:

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

位置-在新的 GoogleMaps SDK:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
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);

您只需要在 map _ activity. xml 中编写一行代码

map:cameraZoom="13"

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

在 onMapReady ()方法中

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

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

甚至我最近也有同样的疑问... ... 上面提到的 setmaxzoom 或 else map: cameraZoom = “13”都不起作用 所以我发现我使用的依赖性是旧的 请确保您对谷歌地图的依赖是正确的 这是最新的用途

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

以下是 近似放大倍数及其功能:

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,如果你想得到的最大或最小变焦水平。

你可以用

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

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

上面的大多数答案要么是不推荐的,要么是缩放通过保留当前经纬度来实现,并且不会缩放到你想要的确切位置。将以下代码添加到 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);
}

I tried with "mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );" but it didn't work for me. So I used this animation for zooming in on start.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);