android 百度地圖自定義圓,更改預設圖示等常用方法
阿新 • • 發佈:2019-01-30
總結了一下百度地圖常用的方法(前提是整合百度地圖環境成功):
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);