是否可以使用新的Google Maps API v2更改myLocation的缩放级别? 如果设置了GoogleMap.setEnableMyLocation(true);你在地图上找到一个按钮来找到你的位置。如果您点击它,地图会将您带到您的位置并将其放大到某个级别。我可以将此缩放更改为更少或更多吗?
答案 0 :(得分:184)
您可以通过默认的myLocation Marker点击更改它是值得怀疑的。但是,如果您希望应用在找到后自动放大您的位置,我会查看我对this question的回答
请注意,我提供的答案不会放大,但如果您将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));
}
}
答案 1 :(得分:131)
您也可以使用:
mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );
只需将缩放值更改为最小值= 2.0和最大值= 21.0之间的任何所需值。
API警告并非所有位置都具有处于或接近最大缩放值的图块。
有关CameraUpdateFactory
。
答案 2 :(得分:19)
带位置 - 在新的GoogleMaps SDK中:
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
答案 3 :(得分:13)
与HeatfanJohn的解决方案略有不同,我将变焦相对于当前缩放级别更改:
// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
答案 4 :(得分:11)
在onMapReady()方法
中将zoomLevel更改为任何所需的值。
float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
答案 5 :(得分:6)
以下是approximate zoom levels以及他们的行为:
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
。
答案 6 :(得分:1)
你必须在maps_activity.xml中只写一行
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLUMNS; j++) {
std::cout << board[i][j];
}
std::cout << "\n";
}
我希望这能解决你的问题...
答案 7 :(得分:1)
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15));
这将没有动画效果。
答案 8 :(得分: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);
答案 9 :(得分: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);
答案 10 :(得分:0)
即使我最近也有同样的疑问......有些上面没有提到过setmaxzoom或者map:cameraZoom =&#34; 13&#34;不工作 所以我发现我使用的依赖性很旧 请确保您对谷歌地图的依赖是正确的 这是最新的用途
compile 'com.google.android.gms:play-services:11.8.0'
答案 11 :(得分:0)
您可以使用
enum Direction {
NORTH, EAST, SOUTH, WEST;
static {
(SOUTH.oppositeDirection = NORTH).oppositeDirection = SOUTH;
(WEST.oppositeDirection = EAST).oppositeDirection = WEST;
}
private Direction oppositeDirection;
public Direction getOppositeDirection() {
return oppositeDirection;
}
}
答案 12 :(得分: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);
}