模仿单车定位页面拖动地图位置移动POI周边数据的定位效果(基于百度)

模仿单车定位页面拖动地图位置移动POI周边数据的定位效果(基于百度)

1.定位指针

在地图中央写一个imageview控件,定位针类似,在代码中转换获取到地图的经纬度

2.拖动(直接上代码)

BaiduMap.OnMapStatusChangeListener onMapStatusChangeListener = new BaiduMap.OnMapStatusChangeListener() {
        /**
         * 手势操作地图,设置地图状态等操作导致地图状态开始改变。
         * @param mapStatus 地图状态改变开始时的地图状态
         */
        @Override
        public void onMapStatusChangeStart(MapStatus mapStatus) {
            Toast.makeText(PoiSearchDemo.this, "开始滑动", Toast.LENGTH_SHORT).show();
        }
        /**
         * 手势操作地图,设置地图状态等操作导致地图状态开始改变。
         * @param mapStatus 地图状态改变开始时的地图状态
         */
        @Override
        public void onMapStatusChangeStart(MapStatus mapStatus, int i) {
            Log.e("TAG","滑动中"+i);
        }
        /**
         * 地图状态变化中
         * @param mapStatus 当前地图状态
         */
        @Override
        public void onMapStatusChange(MapStatus mapStatus) {
            Log.e("TAG","滑动中");

        }
        /**
         * 地图状态改变结束
         * @param mapStatus 地图状态改变结束后的地图状态
         */
        @Override
        public void onMapStatusChangeFinish(MapStatus mapStatus) {
            Toast.makeText(PoiSearchDemo.this, "结束滑动", Toast.LENGTH_SHORT).show();
//            updateCenterPos(mapStatus);
            updateCenterPos2();
            //方法一
//            LatLng mCenterLatLng = mapStatus.target;
//        /*获取经纬度*/
//            double lat = mCenterLatLng.latitude;
//            double lng = mCenterLatLng.longitude;
//            Log.e("地图坐标","经度:"+lat+"纬度"+lng);
//            mBaiduMap.clear();
//            center = new LatLng(lat, lng);
//            searchType = 2;
//            PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption()
//                    .keyword(keyWorldsView.getText().toString())//关键字
//                    .sortType(PoiSortType.distance_from_near_to_far)//搜索类型,从近至远
//                    .location(center)指定位置,选填,设置位置之后,返回结果按距离该位置的远近进行排序
//                    .radius(radius)//搜索覆盖半径
//                    .pageNum(loadIndex);//查询第几页:POI量可能会很多,会有分页查询;
//            mPoiSearch.searchNearby(nearbySearchOption);
        }
    };

3.在拖动地图结束时转换得到定位针对应地图的经纬度,并获取POI搜索结果,搜索这个百度API比较清晰,看文档

   public void updateCenterPos2(){
//  获取屏幕点
    int[] location =new int[2];
    iv_mark_point.getLocationOnScreen(location);
    int x = location[0];
    int y = location[1];
    Point centerTop = new Point(x,y);
    //获取屏幕点 的坐标位置
    LatLng latlng = mBaiduMap.getProjection().fromScreenLocation(centerTop);
    double lat = latlng.latitude;
    double lng = latlng.longitude;
    Log.e("地图坐标2","经度:"+lat+"纬度"+lng);

    center = new LatLng(lat, lng);
    searchType = 2;
    PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption()
         .keyword(keyWorldsView.getText().toString())//关键字
         .sortType(PoiSortType.distance_from_near_to_far)//搜索类型,从近至远
         .location(center)指定位置,选填,设置位置之后,返回结果按距离该位置的远近进行排序
         .radius(radius)//搜索覆盖半径
         .pageNum(loadIndex);//查询第几页:POI量可能会很多,会有分页查询;
    mPoiSearch.searchNearby(nearbySearchOption);
    }
总结:写这篇文档是为了标记自己对Mark指针在单车使用中的好奇,为什么他们拖动地图后指针不会变呢,网上没有人具体说明过程,我想单车现在这么火,类似这种demon技术应该很多,so标记一下,让类似我这样使用却没搜到结果的人看到,Ok
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TobiasLeeBeiJing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值