Android Google Maps v2 - установите уровень масштабирования для myLocation

105

Можно ли изменить уровень масштабирования для myLocation с помощью нового API Карт Google v2?

Если вы установите GoogleMap.setEnableMyLocation(true);, вы получите кнопку на карте, чтобы найти свое местоположение.

Если вы нажмете на нее, карта приведет вас к вашему местоположению и приблизит его до некоторого уровня. Могу ли я изменить масштаб на меньшее или большее?

думази
источник
1
у вас есть представление об уровне масштабирования кнопки mylocation? Я хочу эту ценность.
Прашант Деббадвар,

Ответы:

211

Сомнительно, что вы можете изменить его одним щелчком мыши с помощью маркера 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));
    }
}
DiscDev
источник
146

Вы также можете использовать:

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

Чтобы просто изменить значение масштабирования на любое желаемое значение между минимальным значением = 2,0 и максимальным значением = 21,0.

API предупреждает, что не во всех местах плитки имеют значения с максимальным или близким к максимальному масштабированию.

Смотрите это для получения более подробной информации о методах масштабирования , доступных в CameraUpdateFactory.

HeatfanДжон
источник
1
Какой уровень масштабирования по умолчанию ??
Игорь Ганапольский 08
14 - уровень масштабирования по умолчанию
vin shaba,
25

с местоположением - в новом SDK GoogleMaps:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
Ицхар
источник
2
Есть ли разница между newLatLngZoom () и zoom (), на которую ссылались многие другие ответы? В приложении с точки зрения конечного пользователя они выглядят одинаково.
portfoliobuilder
15

Немного другое решение, чем у HeatfanJohn, где я изменяю масштаб относительно текущего уровня масштабирования:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
Тео Инке
источник
15

Вот приблизительные уровни масштабирования и их назначение:

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если хотите получить максимальный или минимальный уровень масштабирования.

j2emanue
источник
12

В методе onMapReady ()

измените zoomLevel на любое желаемое значение.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
Анкит Сингх
источник
2

вам нужно написать только одну строчку в maps_activity.xml

map:cameraZoom="13"

Надеюсь, это решит вашу проблему ...

Анкит Сингх
источник
2

Ты можешь использовать

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
Павел
источник
1

Даже у меня недавно был такой же запрос .... каким-то образом ни один из вышеупомянутых setmaxzoom или еще map: cameraZoom = "13" не работал Итак, я обнаружил, что зависимость, которую я использовал, была старой, пожалуйста, убедитесь, что ваша зависимость для карт Google правильно, это новейшее использование этого

compile 'com.google.android.gms:play-services:11.8.0' 
Сиддарт Ньяти
источник
1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Эффект анимации не будет.

Акула Дэн
источник
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);
Варун Чандран
источник
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);
}
воск
источник
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);
Киртан Чанд
источник