Как получить координаты синей точки в android maps v2

На карте я хочу показать направление пути от моего местоположения до определенного места. Я уже реализовал логику для рисования пути на карте, но у меня есть проблемы с определением моего текущего местоположения.

Я использую новый LocationClient для получения моего текущего местоположения, как это описано в этой статье: http://developer.android.com/training/location/retrieve-current.html, и я где-то читал, что новый API карт v2 использует ту же технику для получения моего местоположения.

В любом случае, когда я рисую на карте направления пути от своего местоположения к нужному, начальная точка пути отличается от синей точки, которая отмечает мое текущее местоположение.

Синяя точка показывает правильное положение, а моя реализация — нет. Итак, есть ли способ получить координаты маркера с синей точкой, что-то вроде map.getMyLocationMarker().getLocation(), или мне нужно найти какой-то другой способ получить свое местоположение вручную?

ОБНОВЛЕНИЕ

Я забыл, что оставил этот вопрос открытым, но вот мой ответ ниже.


person djandreski    schedule 03.06.2013    source источник


Ответы (4)


Location findme = mMap.getMyLocation();
        double latitude = findme.getLatitude();
        double longitude = findme.getLongitude();
        LatLng latLng = new LatLng(latitude, longitude);

Это даст вам широту и долготу вашего местоположения.

person bigC5012    schedule 04.06.2013
comment
getMyLocation() возвращает ноль. Есть ли какие-то предпосылки перед вызовом этого метода? - person djandreski; 04.06.2013
comment
@djandreski GoogleMap.setMyLocationEnabled требуется. - person MaciejGórski; 04.06.2013

Поскольку метод googlemyMap.getMyLocation() устарел...

Лучшее простое решение, которое я нашел

Получение текущего местоположения и центрирование камеры на маркере. Редактор Android Studio видит, что есть ошибка, но когда вы запускаете его, проблем с кодом нет.

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));
if (location != null)
{    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria,false));

        if (location != null)
        {
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 13));

            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(location.getLatitude(), location.getLongitude()))      // Sets the center of the map to location user
                    .zoom(17)                   // Sets the zoom
                    .build();                   // Creates a CameraPosition from the builder
            mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
        LatLng goztepe = new LatLng(location.getLatitude(), location.getLongitude());
        mMap.addMarker(new MarkerOptions().position(goztepe).title("Göz Göz GÖZTEPE"));

объясняется здесь.

person Emre    schedule 05.10.2016

Первоначальный ответ заключался в использовании setMyLocationChangeListener() в GoogleMap, чтобы получать уведомления об изменениях "синей точки". Теперь это устарело.

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

person CommonsWare    schedule 03.06.2013

На самом деле это была действительно глупая ошибка, которую я совершил.

Но вот ответ. Процедура, описанная в ссылке в вопросе, является правильной.

Моя проблема заключалась в том, что я сохранил извлеченные данные в новый общий ключ настроек и читал их из старого, где было сохранено неправильное местоположение. Да, это довольно тупо :)

Так что следуйте инструкциям на портале разработчиков Android, и с ним не будет ошибок.

person djandreski    schedule 01.07.2013
comment
Можете ли вы дать мне код? map.getMyLocation() у меня не работает - person Sampath Kumar; 06.08.2013