通过新的Google Maps API v2,可以更改“我的位置”所在的缩放级别吗?
如果设置GoogleMap.setEnableMyLocation(true);
,则会在地图上获得一个按钮以查找您的位置。
如果单击它,则地图将带您到您的位置并将其缩放到某个级别。我可以将此缩放级别更改为较小或较大吗?
通过新的Google Maps API v2,可以更改“我的位置”所在的缩放级别吗?
如果设置GoogleMap.setEnableMyLocation(true);
,则会在地图上获得一个按钮以查找您的位置。
如果单击它,则地图将带您到您的位置并将其缩放到某个级别。我可以将此缩放级别更改为较小或较大吗?
默认的myLocation Marker不太可能在点击时更改它。但是,如果您想要应用程序在找到您的位置后自动缩放到您的位置,我建议您查看我的答案这个问题
请注意,我提供的答案不会缩放,但是如果您将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));
}
}
onMapReady()
中使用animateCamera()
时要小心,这可能会导致地图卡顿且带有淡黄色背景。对于地图初始化,最好使用moveCamera()
(相同的签名)。 - QuarK您还可以使用:
mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );
只需将缩放值更改为介于最小值2.0和最大值21.0之间的任何所需值。
API警告称,并非所有位置都具有在或接近最大缩放级别时的瓷砖。
有关CameraUpdateFactory
中可用的缩放方法的更多信息,请参见此处。
17.0f
? - IgorGanapolsky使用新版的GoogleMaps SDK可以获取位置信息:
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
以下是大致缩放级别及其作用:
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
。
这是比HeatfanJohn提供的稍微不同的解决方案,其中我根据当前缩放级别相对地改变了缩放比例:
// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
在maps_activity.xml中,您只需要编写一行代码。
map:cameraZoom="13"
我希望这能解决你的问题...
标签
CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15));
这不会产生动画效果。
我最近也有同样的问题……不知道为什么上述提到的setmaxzoom或map:cameraZoom="13"都没有起作用。 后来我发现我使用的依赖项已经过时了,请确保你的Google Maps依赖项是正确的,这是最新的,请使用它。
compile 'com.google.android.gms:play-services:11.8.0'