2013-01-21 14 views
11

Kullanıcının coğrafi konumunu getMyLocation() ile görmesi gereken bir uygulama oluşturuyorum, ancak bu işlem null. Bunun için bir çözüm var, çünkü getMyLocation() yönteminin her zaman boş döndüğünü okudum. Google Haritalar’da yeniyim, bu yüzden herhangi bir yardım takdir edilecektir!Geçerli konumumu Google Haritalar API V2'de nasıl edinebilirim? V2

Kodu:

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

Bazı kod ekleyin. Neyi yanlış yaptığınızı nasıl tahmin etmeliyiz? – rekire

+0

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

cevap

0

Lütfen Google Maps Android API v2 örnek kodunu kontrol edin, Bunu kullanarak sorununuzu çözeceksiniz. Harita konumu ilk onCameraChange sonradır olsun onCreate();

ilk kez üzerinde hiçbir yeri yoktur nedeniyle bu derste

Sample Code

+0

Sağladığınız bağlantıda herhangi bir çözüm göremiyorum. Lütfen bana ne göstermek istediğini açıkla? – Xarialon

+1

'google-play-services'ı sdk manager.if dosyasına yükledikten sonra sdk klasörünüzü açın ve bu adımları follw' /extras/google/google_play_services/samples/maps' örnek kodunu aldınız . –

+0

Ahh, teşekkürler. Bazı güzel örnekler gördüm ve cevabınızı kabul ediyorum, çünkü bu kesinlikle bana yardımcı oldu! – Xarialon

4

Çünkü onların sınırlı ve kusurların yeni google haritalar API sevmiyorum. Sizin durumunuzda en iyi yolun LocationManager ve LocationListener sınıflarını kullanması olduğunu düşünüyorum. Telefonunuz uyduları bulup, haritaya işaretçi ekleyebileceğiniz yer alırsınız. Ayrıca hızlı bir şekilde yer almanız gerekiyorsa getLastKnownLocation() yöntemini de kullanabilirsiniz. Bence, uygulama başladığında telefonun konumunu bilmesi için fazla zamanınız olmadığından, google maps getMyLocation() yönteminin null değerini döndürdüğünü düşünüyorum. Ve Google Maps API v2'de bir çeşit onLocationChanged() yöntemi yoktur. Bu API'yi sevmiyorum.

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!")); 
      } 
      }); 

      } 
     } 
    } 

çağrı bu fonksiyon üzerinde fonksiyonunu

+0

örneğini burada göremiyorsunuz ... başka bir çözüm mü? –

+0

nereye takıldığını söyle bana? – Nitin

+0

Geçerli konumumu bulmak için işe yaramadı. ama bunu Location manager sınıfını kullanarak gerçekleştirdim. –

1

map.getMyLocation() return null oluşturmak() olay .

böylece harita üzerinde

map.setOnCameraChangeListener(new ...) 

kullanabilir ve ilk kez

1

oluştuktan sonra yaptım bu şekilde uygulamanızı yapın: onCreate() üzerine

private GoogleMap mGoogleMap; 
private SupportMapFragment mMapFragment; 

:

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

mGoogleMap.setOnMyLocationChangeListener(myLocationChangeListener); 
Bu size yardımcı olacaktır

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

Hope:

Şimdi MyLocationChangeListener ekleyin.