簡體   English   中英

Android:在 Google Map 活動上設置用戶位置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM