2013-01-21 2 views
11

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

Код:

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()); 
} 
+0

Добавить код. Как мы должны угадывать, что вы делаете неправильно? – rekire

+0

http://androidroadies.blogspot.in/2013/09/showing-current-location-in-google-maps.html – Roadies

ответ

0

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

Sample Code

+0

Я не вижу никакого решения по предоставленной вами ссылке. Пожалуйста, объясните, что вы хотите мне показать? – Xarialon

+1

установите 'google-play-services' в свой sdk manager.if, который уже установлен, затем откройте папку sdk и выполните следующие действия:' /extras/google/google_play_services/samples/maps' вы получили образец кода , –

+0

Ах, спасибо. Я видел несколько хороших примеров, и я приму свой ответ, потому что это определенно помогло мне! – Xarialon

4

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

15
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's Me!")); 
      } 
      }); 

      } 
     } 
    } 

вызов этой функции в о функции создания

+0

не работает ... любое другое решение? –

+0

, где вы застряли, скажите мне? – Nitin

+0

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

1

map.getMyLocation() return null becouse нет расположение на onCreate();

впервые карты получают положение после первого onCameraChange() событие ,

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

map.setOnCameraChangeListener(new ...) 

на карте и сделать свою реализацию после первого времени произошло

1

Я сделал это так:

private GoogleMap mGoogleMap; 
private SupportMapFragment mMapFragment; 

на 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())); 
    } 
}; 

Надеется, что это поможет вам.

Смежные вопросы