Подтвердить что ты не робот

Как получить текущее местоположение в Google Maps API V2

Я создаю приложение, в котором пользователю нужно увидеть его/ее географическое местоположение с помощью getMyLocation(), но это возвращает значение null. Есть ли какое-либо решение для этого, потому что я прочитал, что метод getMyLocation() всегда возвращает null. Я новичок в Google Maps, поэтому любая помощь будет оценена!

код:

GoogleMap map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
map.setMyLocationEnabled(true);
Location myLocation = map.getMyLocation();

if( myLocation != null ){
    helper.showToast( "Latitude: " + myLocation.getLatitude() + "\nLongitude: " + myLocation.getLongitude() );
}
4b9b3361

Ответ 1

пожалуйста, проверьте код образца Google Maps Android API v2, используя это, вы решите свою проблему.

Пример кода

Ответ 2

private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (mMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            mMap.setMyLocationEnabled(true);
            // Check if we were successful in obtaining the map.
            if (mMap != null) {


             mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {

           @Override
           public void onMyLocationChange(Location arg0) {
            // TODO Auto-generated method stub

             mMap.addMarker(new MarkerOptions().position(new LatLng(arg0.getLatitude(), arg0.getLongitude())).title("It Me!"));
           }
          });

            }
        }
    }

вызов этой функции в функции create

Ответ 3

Мне не нравятся новые API карт google из-за их ограниченности и недостатков. В вашем случае я считаю, что лучший способ - использовать LocationManager и LocationListener. Вы получите местоположение, когда ваш телефон найдет спутники, а затем вы можете добавить маркер на карту. Также вы можете использовать метод getLastKnownLocation(), если вам нужно быстро найти место. Я думаю, что метод google maps getMyLocation() возвращает null, потому что у телефона не так много времени, чтобы узнать его местоположение, когда приложение запускается. А в Google Maps API v2 нет какого-то метода onLocationChanged(). Мне не нравится этот API.

Ответ 4

map.getMyLocation() return null Потому что нет места на onCreate();

в первый раз, когда позиция получения карты начинается после первого события onCameraChange().

поэтому используйте

map.setOnCameraChangeListener( new ...)

на вашей карте и выполните вашу реализацию после первого раза

Ответ 5

Я сделал так:

private GoogleMap mGoogleMap;
private SupportMapFragment mMapFragment;

on onCreate():

mMapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
mGoogleMap = mMapFragment.getMap();

mGoogleMap.setOnMyLocationChangeListener(myLocationChangeListener);

Теперь добавьте MyLocationChangeListener:

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
    @Override
    public void onMyLocationChange(Location location) {
      Log.i(TAG, "Latitude: "+String.valueOf(location.getLatitude())+" - Longitude: "+String.valueOf(location.getLongitude()));
   }
};

Надеюсь, это поможет вам.