Android Google Maps v2 - установить уровень масштабирования для myLocation
Можно ли изменить уровень масштабирования для myLocation с помощью нового Google Maps API v2? Если вы установите GoogleMap.setEnableMyLocation(true); Вы получаете кнопку на карте, чтобы найти ваше местоположение. Если вы нажмете на нее, карта приведет вас к вашему местоположению и увеличит масштаб до некоторого уровня. Могу ли я изменить этот зум, чтобы он был меньше или больше?
10 ответов
Сомнительно, что вы можете изменить его по клику с помощью маркера 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 предупреждает, что не во всех местах есть плитки с значениями, близкими к максимальному или близкому к нему
Смотрите это для получения дополнительной информации о методах масштабирования, доступных в CameraUpdateFactory
,
С местоположением - в новом GoogleMaps SDK:
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
Вот приблизительные уровни масштабирования и что они делают:
1: World
5: Landmass/continent
10: City
15: Streets
20: Buildings
так что вы можете сделать что-то вроде этого, чтобы увеличить масштаб до уровня улицы, например:
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))
Немного другое решение, чем у HeatfanJohn, где я изменяю масштаб относительно текущего уровня масштабирования:
// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
В методе onMapReady()
измените zoomLevel на любое желаемое значение.
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);
Даже у меня недавно был такой же запрос.... некоторые, как ни один из вышеупомянутых setmaxzoom или map:cameraZoom="13" не работал. Так что я обнаружил, что зависимость, которую я использовал, была старой, пожалуйста, убедитесь, что ваша зависимость от карт Google правильно, это новейшее использование этого
compile 'com.google.android.gms:play-services:11.8.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);
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);
}
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);