Android HERE映射在地图上已确定的侦听器

时间:2017-08-23 14:35:27

标签: android here-api

我需要在地图“已确定”时运行反向geoCode请求。我能找到的最接近的东西是TransformListener:

mMap.addTransformListener(new Map.OnTransformListener() {
        @Override
        public void onMapTransformStart() {

        }

        @Override
        public void onMapTransformEnd(MapState mapState) {


        }
    });

问题是onMapTransformEnd在拖动地图时多次触发。还尝试向mapview添加一个手势监听器,但这似乎也没有在适当的时间回调,因为onPanEnd()在用户再次触摸之前不会被调用。

mMapView.getMapGesture().addOnGestureListener(new MapGesture.OnGestureListener() {
        @Override
        public void onPanStart() {

        }

        @Override
        public void onPanEnd() {

        }

地图完成移动并结算后是否有回调?

2 个答案:

答案 0 :(得分:2)

非常快速的答案,但如果它是专门拖动你担心,为什么不将自己的滞后添加到OnTransformListener。即onMapTransformEnd回调和执行代码之间的等待时间很短。它将在另一个onMapTransformStart回调时被取消。

Map已确定的一般回调实际上是onMapTransformEnd

答案 1 :(得分:0)

由于api没有提供稳定的倾听者,因此延迟使用延迟:

mMap.addTransformListener(new Map.OnTransformListener() {
            @Override
            public void onMapTransformStart() {}

            @Override
            public void onMapTransformEnd(MapState mapState) {
                // This works but is not optimal. I'd rather not wait a whole second before sending
                // the geocoder request, but a half second is too fast to send only one request.
                if(!mRunning) {
                    mRunning = true;
                    mSettledHandler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            updatePickupViewOnMapSettled();
                            mRunning = false;
                        }
                    }, 1000);
                }
            }
        });