我正在构建一个应用程序,它必须始终将用户置于地图的中心。
我已经设置了以下内容:
locationManager = (LocationManager) saveContext
.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new MapLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000,
10, locationListener);
if (myLocation != null) {
setLocation(myLocation);
}
private void setLocation(Location location) {
workoutMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
location.getLatitude(), location.getLongitude()), 18.0f));
}
这很有效,只要我在手机的历史记录中有一个lastKnownLocation。地图将正确居中。
我希望每次我获得新的位置更新时,都会使用新的位置信息再次执行setLocation()。
我尝试创建一个刚刚获取lastKnownLocation然后setLocation()的线程; 但这没有成功。
答案 0 :(得分:1)
我建议您在Googles Receiving Location Updates指南中查看优秀且完整的示例。
它包含示例代码和您可以立即在ADT中导入的Android项目。
位置服务调用以向您的应用发送位置更新的回调方法在LocationListener接口的onLocationChanged()方法中指定。
您可以更新相机。
答案 1 :(得分:0)
万一其他人偶然发现这一点,可以做到,用户Rob给出的答案在另一篇StackOverflow帖子here中。
基本思想是创建一个CameraPosition对象,将其传递给CameraUpdateFactory,然后让地图为CameraUpdate对象设置动画。