Карты Android - как автоматически центрировать карту по текущему местоположению пользователя? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть активность в Картах Google, и я хочу, чтобы камера центрировалась и приблизила пользователя, как только карта откроется / появится синяя точка, чтобы пользователю не нужно было нажимать "центральную кнопку" и мне не нужно жестко задавать положение камеры на карте.
Я нашел много примеров кода, которым 5-6 лет, поэтому ни один из них больше не работает.
Можно ли вообще узнать текущее местоположение пользователя (лат. И лонг.)?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Прежде всего, вам понадобится объект LatLngBounds, это необходимо для определения позиций, которые будут ограничивать карту.

Затем вам нужно определить ширину и высоту вашего устройства, что очень просто.

Просто следуйте приведенному ниже коду

LatLngBounds.Builder builder = new LatLngBounds.Builder();
//Insert your location
builder.include(location1);
builder.include(location2);
LatLngBounds bounds = builder.build();

//Get the width and height of the device's screen
int width = getResources().getDisplayMetrics().widthPixels;
int height = (int) ((getResources().getDisplayMetrics().heightPixels) * 0.85);
int padding = (int) (width * 0.15);

//Centralize the markers
yourMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding));
0 голосов
/ 02 ноября 2018

пожалуйста, попробуйте это:

private void centerOnMyLocation() {

    map.setMyLocationEnabled(true);

    location = map.getMyLocation();

    if (location != null) {
        myLocation = new LatLng(location.getLatitude(),
                location.getLongitude());
    }
    map.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
            Constants.MAP_ZOOM));
}

Обновите имя свойства и назовите этот код для центрирования на местоположении текущего пользователя.

Если у вас уже есть текущая позиция, просто вызовите эту функцию:

map.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
                Constants.MAP_ZOOM));
...