0

我正在使用setMyLocationEnabled(true)Google Maps Android API v2进行自动位置跟踪并像 Google Maps 应用程序一样显示指示器。我需要相机位置跟随我的位置指示器,以便它始终可见,除非用户平移地图。

因此,我正在使用该onMyLocationChange方法将相机移动到新位置,但是当用户平移地图或使用我的应用程序中的搜索字段时,会onMyLocationChange继续调用并且相机总是返回到我的位置坐标。

如何在启用我的位置时自动移动相机,在手动操作地图(平移、旋转或搜索)时禁用它,并在用户按下我的位置按钮时启用它?

谢谢。

4

4 回答 4

1

编辑:

现在有GoogleMap.setOnMyLocationButtonClickListener,因此您可以跳过第 1 点并使用它。


2 月版的 Maps API v2 无法做到这一点。你能做的最好的事情是:

  1. 拥有自己的“前往我的位置”按钮,以了解何时开始跟踪
  2. 您自己的位置更改侦听器
  3. 在with (returning !)的View顶部知道何时需要停止跟踪SupportMapFragmentonTouchListenerfalse

这个解决方案并不完美,因为它会在用户放大平移之前停止跟踪 - 当他们第一次触摸地图时它会停止,但我认为这是一个不会给用户带来任何混淆的解决方案:他们触摸了地图,所以可以期望跟踪停止并可以按下按钮启动它。

于 2013-04-05T14:40:01.980 回答
0

那么你为什么不只是为什么不打电话给setMyLocationEnabled(false)当用户与TextView

您可以与地图检查的唯一交互是:

map.setOnMapClickListener(listener);
map.setOnMapLongClickListener(listener);
map.setOnMarkerClickListener(listener);
map.setOnMarkerDragListener(listener);

您可以对这些交互执行相同的操作以禁用my-location layer.

于 2013-04-05T11:19:15.247 回答
0

从方法中删除这两行(如果有)

@Override
public void onLocationChanged(Location location) {
      //Remove these two lines
      googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
      googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}
于 2015-08-14T06:32:16.270 回答
0

您可以使用 setOnCameraMoveStartedListener 中的 REASON_GESTURE 来检测用户手势。

mMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
    @Override
    public void onCameraMoveStarted(int reason) {
        if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
            //Camera motion initiated in response to user gestures on the map.
        } else if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_API_ANIMATION){
            //Non-gesture animation initiated in response to user actions.
        } else if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_DEVELOPER_ANIMATION){
            //Developer initiated animation.
        }
    }
});

有关更多详细信息,请参阅文档:https ://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCameraMoveStartedListener

于 2021-05-13T03:39:24.720 回答