android 百度地图自定义圆,更改默认图标等常用方法

总结了一下百度地图常用的方法(前提是集成百度地图环境成功): 
1:定位到已经经纬度,只需要改变LatLng的参数即可。有两种方法:

方法1:

//定义Maker坐标点
        LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
        BitmapDescriptor bitmap = BitmapDescriptorFactory
                .fromResource(R.mipmap.ic_launcher);
//构建MarkerOption,用于在地图上添加Marker
        OverlayOptions option = new MarkerOptions()
                .position(point)
                .icon(bitmap);
//在地图上添加Marker,并显示
        baiduMap.getMap().addOverlay(option);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

方法2:

MyLocationData locData = new MyLocationData.Builder()
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(100).latitude(result.getLocation().latitude)
                    .longitude(result.getLocation().longitude).build();
            // 设置定位数据
            baiduMap.setMyLocationData(locData);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2:根据关键词key检索附近建筑(默认返回10条数据)

//经纬度搜索
poiSearch.searchNearby(new PoiNearbySearchOption().keyword("生").radius(5000).location(new LatLng(39.963175, 116.400244)));
//城市搜索
 poiSearch.searchInCity(new PoiCitySearchOption().city("杭州").keyword("东方通信科技园").pageCapacity(1));
  • 1
  • 2
  • 3
  • 4
 poiSearch.setOnGetPoiSearchResultListener(this);
  • 1
    @Override
    public void onGetPoiResult(PoiResult poiResult) {
        if (poiResult == null || poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {
            return;
        }
        if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {
//            附近搜索
            baiduMap.getMap().clear();
            //创建PoiOverlay
            PoiOverlay overlay = new MyPoiOverlay(baiduMap.getMap());
            //设置overlay可以处理标注点击事件
            baiduMap.getMap().setOnMarkerClickListener(overlay);
            //设置PoiOverlay数据
            overlay.setData(poiResult);
            //添加PoiOverlay到地图中
            overlay.addToMap();
            overlay.zoomToSpan();

            return;
        }


    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3:地图放大设置zoom:

        /**
         * 设置地图放大的倍数
         */
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(18).build()));
  • 1
  • 2
  • 3
  • 4

4: 
更改默认图标有两种方法:

  • 方法1
        /**
         * 更改定位默认图标MyLocationConfiguration 第二个参数是是否显示方向信息
         */
        MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;
        BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
                .fromResource(R.drawable.icon_map_gcoding);
        mBaiduMap.setMyLocationConfiguration(new MyLocationConfiguration(mCurrentMode, false, mCurrentMarker));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 方法2:
           //定义Maker坐标点
            //构建Marker图标
            BitmapDescriptor bitmap = BitmapDescriptorFactory
                    .fromResource(R.drawable.icon_map_gcoding);
            //构建MarkerOption,用于在地图上添加Marker
            OverlayOptions options = new MarkerOptions()
                    .position(ll)
                    .icon(bitmap);
            //在地图上添加Marker,并显示
            mBaiduMap.addOverlay(options);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5:将定位到的地方移到地图中央

            /**
             * 将定位到的地方移到地图中央
             */
            LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
            MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
            mBaiduMap.animateMapStatus(msu);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6:在地图中央的地方画圆:

            // 添加圆
            OverlayOptions ooCircle = new CircleOptions().fillColor(0x2201A4F1)
                    .center(ll).stroke(new Stroke(5, 0xAA01A4F1))
                    .radius(200);
            mBaiduMap.addOverlay(ooCircle);
  • 1
  • 2
  • 3
  • 4
  • 5

7:当地图放大时,不让默认的圆出现(不设置accuracy即可),

            // 构造定位数据 accuracy设置精确度
            MyLocationData locData = new MyLocationData.Builder()
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            // 设置定位数据
            mBaiduMap.setMyLocationData(locData);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值