0

我正在构建一个应用程序,它必须始终将用户保持在地图的中心。

我已经设置了以下内容:

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(); 但这行不通。

4

2 回答 2

1

我建议您查看 Google接收位置更新指南中出色且完整的示例。

它包括示例代码和一个您可以立即在 ADT 中导入的 Android 项目。

位置服务调用以向您的应用发送位置更新的回调方法在 LocationListener 接口的 onLocationChanged() 方法中指定。

在那里你可以把你的相机更新。

于 2013-06-18T06:43:56.250 回答
0

以防万一其他人偶然发现这一点,可以做到这一点,用户 Rob 给出的答案在此处的另一个 StackOverflow 帖子中。

基本思想是创建一个 CameraPosition 对象,将其传递给 CameraUpdateFactory,然后让地图为 CameraUpdate 对象设置动画。

于 2014-06-10T16:03:19.367 回答