3.0+百度地图,如何获取地图中心点位置(每次滑动地图后都能够获取地图的中心点位置,并做出相应的操作)

现在有这样一个业务:

1.将地图定位到指定的经纬度位置,当地图停止滑动时搜索附近的地址信息列表,并显示再ListView中。

2.每次滑动地图都需要根据地图中心点位置搜索附近1000米范围内的地址,并显示再列表,直至退出。

 

下面是具体实现的代码:

一:实例化PoiSearch并设置获取结果的监听器setOnGetPoiSearchResultListener

// 创建POI检索实例

        poiSearch = PoiSearch.newInstance();

        // 设置监听器

        poiSearch.setOnGetPoiSearchResultListener(poiSearchListener);

        baiduMap = mapView.getMap();

        //设置地图中心点位置

        MapStatus status = new MapStatus.Builder().target(new LatLng(MyLocation.getInstance().getLocation().getLatitude(), MyLocation.getInstance().getLocation().getLongitude())).build();

        searchMoveFinish(status);

        // 设置地图的缩放级别

        MapStatus mapStatus = new MapStatus.Builder().zoom(18).build();

        baiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(mapStatus));

二、获取poi搜索结果监听器:次监听的目的是可以使用户手动模糊搜索

/**

     * 创建POI检索监听者

     */

    OnGetPoiSearchResultListener poiSearchListener = new OnGetPoiSearchResultListener() {



        @Override

        public void onGetPoiResult(PoiResult poiResult) {

            if (poiResult != null && poiResult.getAllPoi() != null) {

                adapter.setData(poiResult.getAllPoi());

                mSearchResultList.setAdapter(adapter);

                adapter.notifyDataSetChanged();

            } else {

                ToastUtil.getInstance().showTips(ChooseLocationActivity.this,

                        ToastUtil.TOAST_WARING, "没有更多了!");

            }

            adapter.setSelected(-1);

        }



        @Override

        public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {

            // 获取Place详情页检索结果

            ToastUtil.getInstance().showTips(ChooseLocationActivity.this,

                    ToastUtil.TOAST_WARING, "特美的,居然在这里执行了!");

        }

    };

三、监听地图的状态变化

baiduMap.setOnMapStatusChangeListener(new OnMapStatusChangeListener() {



            @Override

            public void onMapStatusChangeStart(MapStatus status) {



            }



            // 移动结束,在这里需要计算出中心点坐标

            @Override

            public void onMapStatusChangeFinish(MapStatus status) {

                searchMoveFinish(status);



            }



            @Override

            public void onMapStatusChange(MapStatus status) {



            }

        });

第四、(重要)根据地理位置信息搜索指定经纬度1000米范围内的所有的地址信息,此方法是“每次滑动地图后都能够获取地图的中心点位置,并做出相应的操作”的主要方法

private void searchMoveFinish(MapStatus status) {

        GeoCoder geoCoder = GeoCoder.newInstance();

        ReverseGeoCodeOption reverCoder = new ReverseGeoCodeOption();

        reverCoder.location(status.target);

        geoCoder.reverseGeoCode(reverCoder); //

        geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {



            @Override

            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult arg0) { // TODO

                                                                                // stub

                if (arg0 != null && arg0.getPoiList() != null) {

                    adapter.setData(arg0.getPoiList());

                    mSearchResultList.setAdapter(adapter);

                    adapter.notifyDataSetChanged();

                } else {

                    ToastUtil.getInstance().showTips(

                            ChooseLocationActivity.this,

                            ToastUtil.TOAST_WARING, "没有更多了!");

                }

            }



            @Override

            public void onGetGeoCodeResult(GeoCodeResult arg0) { //



            }

        });



    }

测试过程遇到的一些问题:注意,移动地图后根据,地图中心点进行搜索时,一定不要使用下面这段代码进行处理:

PoiNearbySearchOption option = new PoiNearbySearchOption();

        option.location(new LatLng(MyLocation.getInstance().getLocation()

                .getLatitude(), MyLocation.getInstance().getLocation()

                .getLongitude()));

        option.keyword(keyword);

        option.radius(1000);

        option.pageNum(10);

        poiSearch.searchNearby(option);

因为测试过程中发现,如果使用了上述代码进行中心点范围内搜索,则每次 执行过后中心点的经纬度坐标是不会发生相应变化的。应该使用:“第四”部中的方法进行搜索,这样搜索出的结果就是我们所预期的结果

 

你可能感兴趣的:(百度地图)