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