2016-04-26 281 views
0

應用程序應該獲取我的當前位置並將其標記在地圖上,而不是此項目只是崩潰。這裏是代碼:獲取當前位置android

public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
      == PackageManager.PERMISSION_GRANTED) { 
     mMap.setMyLocationEnabled(true); 
    } 
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    String provider = locationManager.getBestProvider(criteria, true); 
    Location myLocation = locationManager.getLastKnownLocation(provider); 
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
    double latitude = myLocation.getLatitude(); 
    double longitude = myLocation.getLongitude(); 
    LatLng Me = new LatLng(latitude, longitude); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(Me)); 
    mMap.animateCamera(CameraUpdateFactory.zoomTo(14)); 
    mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("You are here!")); 

} 

任何想法如何解決它,或者這裏有什麼問題? (這是谷歌地圖的項目,所有需要的權限授予BTW)

+0

那麼,你正試圖獲得一個位置,而不必有這樣做('getLastKnownLocation()')。除此之外,請編輯您的問題併發布崩潰的Java堆棧跟蹤。 – CommonsWare

+0

如果你說它的崩潰在你的堆棧跟蹤 – tyczj

+0

我的壞在那裏,我會盡快添加跟蹤。我沒有解釋到底發生了什麼,所以:應用程序運行,然後突然關閉,如「你的項目已停止」< - 模擬器(對不起,如果我想知道的東西,幾乎全新to andod) – KKKk

回答

0

可以使用的LocationManager此:

locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE); 
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
if (location != null) { 
    latitude=location.getLatitude(); 
    longitude=location.getLongitude(); 
    Log.d("GPS","lat : "+latitude); 
    Log.d("GPS","long : "+longitude); 
} 

然後你只顯示在地圖上的位置,如圖this教程。

我希望它有幫助!