最近项目采用高德地图,高德地图的文档,demo都很详细,想实现的功能基本上都有。在项目里有一个功能,是类似根据地图的中心经纬度实现数据请求。为了不无限的请求,所以要分别监听,地图的缩放,地图位移,这里就有一个方法;
gadMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() )
这个方法是高德地图监听地图状态改变的方法,完整的方法如下:
gadMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { } @Override public void onCameraChangeFinish(CameraPosition cameraPosition) { });这两个方法里面,可以实现对地图缩放和移动的监听,主要的方法是:cameraPosition.zoom(缩放),cameraPosition.target(经纬度);
例如我的需求是要实现地图位移的时候,请求数据,但是地图缩放的时候不请求数据;我的地图的缩放级别是16f,那么我先定义一个 float getZoomB = 16f;
然后在地图状态改变完成的地方做判断;
if (getZoomB != cameraPosition.zoom ){ getZoomB = cameraPosition.zoom; Toast.makeText(getApplicationContext(),"缩放了,不作为",Toast.LENGTH_SHORT).show(); }else {
这样,就可以实现,地图缩放的时候不作为,而在位移的时候却可以做你想做的请求,同样,监听位移事件也可以这样实现,例如,在两点之间相距多远的时候,才开始请求数据,同样可以用这样的方法来判断实现。