在Android Listen事件上拖动地图

在Android Listen事件上拖动地图,android,google-maps,Android,Google Maps,各位,我构建了一个片段,其中包含一个SupportMapFragment,我希望能够拖动地图并检测摄像头显示的新“区域”,以便在该区域内加载标记 ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMapAsync(this); 在地图ReadyCall背面,我添加了一个OnCamerach Angelistener: @Override public void onMapReady(

各位,我构建了一个片段,其中包含一个SupportMapFragment,我希望能够拖动地图并检测摄像头显示的新“区域”,以便在该区域内加载标记

 ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
在地图ReadyCall背面,我添加了一个OnCamerach Angelistener:

 @Override
public void onMapReady(GoogleMap googleMap) {

    googleMap.getUiSettings().setZoomControlsEnabled(false);
    googleMap.getUiSettings().setMyLocationButtonEnabled(true);

    googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {

            showItemsinMap(cameraPosition.target.latitude, cameraPosition.target.longitude);

        }
    });

}
我的地图上还有另一个功能,我可以在上面拖动一个多边形,并使用getProjection方法获取区域内的标记:

LatLng latLng = map.getProjection().fromScreenLocation(x_y_points);
其中x_y_点是屏幕上的x,y坐标,然后我创建一个多边形,并添加get SW、SE、NW和NE点,以获得搜索标记的区域


处理地图上新区域的最佳方法是什么?

在地图v2以后的版本中回调OnCameraMoveStart是开始的关键

   @Override
   public void onMapReady(GoogleMap map) {
      mMap = map;

      mMap.setOnCameraIdleListener(this);
      mMap.setOnCameraMoveStartedListener(this);
      mMap.setOnCameraMoveListener(this);
      mMap.setOnCameraMoveCanceledListener(this);

    // Show Sydney on the map.
      mMap.moveCamera(CameraUpdateFactory
            .newLatLngZoom(new LatLng(-33.87365, 151.20689), 10));
    }

@Override
public void onCameraMoveStarted(int reason) {

    if (reason == OnCameraMoveStartedListener.REASON_GESTURE) {
        Toast.makeText(this, "The user gestured on the map.",
                       Toast.LENGTH_SHORT).show();
      } else if (reason == OnCameraMoveStartedListener
                            .REASON_API_ANIMATION) {
        Toast.makeText(this, "The user tapped something on the map.",
                       Toast.LENGTH_SHORT).show();
      } else if (reason == OnCameraMoveStartedListener
                            .REASON_DEVELOPER_ANIMATION) {
        Toast.makeText(this, "The app moved the camera.",
                       Toast.LENGTH_SHORT).show();
      }
  }

检查这个问题,如果它能帮助你。事实上,在谷歌服务9.4.0 OnCamerachenglistener被弃用,现在你必须实现OnCameradle,问题是每次调用它,我想知道它是否在OnStart,onResume期间调用,因为我不断地调用这个事件,尽管我根本不移动地图。