1. 程式人生 > >android 百度地圖自定義圓,更改預設圖示等常用方法

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);

方法2:

MyLocationData locData = new MyLocationData.Builder()
                    // 此處設定開發者獲取到的方向資訊,順時針0-360
                    .direction(100).latitude(result.getLocation
().latitude) .longitude(result.getLocation().longitude).build(); // 設定定位資料 baiduMap.setMyLocationData(locData);

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));
 poiSearch.setOnGetPoiSearchResultListener(this);
    @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;
        }


    }

3:地圖放大設定zoom:

        /**
         * 設定地圖放大的倍數
         */
        mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(18).build()));

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));
  • 方法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);

5:將定位到的地方移到地圖中央

            /**
             * 將定位到的地方移到地圖中央
             */
            LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
            MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
            mBaiduMap.animateMapStatus(msu);

6:在地圖中央的地方畫圓:

            // 新增圓
            OverlayOptions ooCircle = new CircleOptions().fillColor(0x2201A4F1)
                    .center(ll).stroke(new Stroke(5, 0xAA01A4F1))
                    .radius(200);
            mBaiduMap.addOverlay(ooCircle);

7:當地圖放大時,不讓預設的圓出現(不設定accuracy即可),

            // 構造定位資料 accuracy設定精確度
            MyLocationData locData = new MyLocationData.Builder()
                    // 此處設定開發者獲取到的方向資訊,順時針0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            // 設定定位資料
            mBaiduMap.setMyLocationData(locData);