[英]Android: Setting user location on Google Map activity
我剛剛在我的應用程序中進行了一項活動,向用戶顯示了 map。 我怎樣才能把用戶的位置放到這個 map 上? 這樣做有點困惑,所以任何幫助將不勝感激!
另外:當我設置 map 時,我必須包括: MapView mapView = (MapView) findViewById(R.id.mapview); 為什么你必須包含這個,因為你還沒有:setContentView(R.layout.main);? - 聽起來像一個白痴問題,但這只是我想知道的!
我建議使用 MyLocationOverlay。 這將獲取用戶的當前位置並通過藍點將其顯示在 map 上。 您可以通過以下方式完成此操作:
List<Overlay> overlays = mMaps.getOverlays();
overlays.clear();
MyLocationOverlay myLocOverlay = new MyLocationOverlay(this, mMaps);
myLocOverlay.enableMyLocation();
overlays.add(myLocOverlay);
myLocOverlay.runOnFirstFix(new Runnable() { public void run() {
mMaps.getController().animateTo(myLocOverlay.getMyLocation());
}});
這是完成這項工作的示例代碼。 簡短描述,您首先獲取 locationService 以了解位置,然后使用 Criteria api 讓系統根據您在 Criteria 中的設置選擇最佳提供程序,然后您獲得提供程序,從提供程序請求位置更新並實現 LocationListener 接口,也可以緩存最后一個位置調用 getLastKnownLocation 但我不會指望這可能會導致過時或 null 結果
String contenxt = Context.LOCATION_SERVICE;
locationManager = (LocationManager) getSystemService(contenxt);
/*
* trying to get the best provider
* with given conditions
*/
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setCostAllowed(true);
criteria.setSpeedRequired(false);
criteria.setBearingRequired(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Log.d(GAL, provider);
locationManager.requestLocationUpdates(provider, 3000, 30, locationListener);
location = locationManager.getLastKnownLocation(provider);
注意:不要忘記實現位置監聽器
請注意:您沒有將 mapView 與 findViewById(R.id.mapView) 包括在您的 xml 中,因此在您的布局中。 您只是在參考 mapView 以使用 setZoom、animateTo 等內置方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.