先按照百度地图基础配置下载好对应的sdk导入as及配置好清单文件等相关百度api
/**
* 设置地图定位标识
* @param latitude
* @param longtitude
*/
protected void showMap(double latitude, double longtitude) {
baiduMap = mapview.getMap();
baiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(15.0f));
baiduMap.setOnMapClickListener(this);
mapview.setLongClickable(true);
LatLng lng = new LatLng(latitude, longtitude);
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.ease_icon_marka);
MarkerOptions markerOptions = new MarkerOptions()
.position(lng)
.icon(bitmap)// 设置 Marker 覆盖物的图标
.zIndex(9)// 设置 marker 覆盖物的 zIndex
.draggable(true);
baiduMap.clear();//清除覆盖物
baiduMap.addOverlay(markerOptions);//添加
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(lng, 18f);
baiduMap.animateMapStatus(u);
}
点击地图位置
@Override
public void onMapClick(LatLng latLng) {
//通过经纬度获取位置
BdMapUtils.reverseGeoParse(latLng.longitude, latLng.latitude, new OnGetGeoCoderResultListener() {
//获取正向解析结果时执行函数
@Override
public void onGetGeoCodeResult(GeoCodeResult arg0) {
}
//获取反向解析结果时执行函数
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
// 没有检测到结果
} else {
if (!TextUtils.isEmpty(result.getAddress())) {
mLocationListAdapter.crear();
page = 0;
initSeach(result.getAddress(), 0);
}
showMap(latLng.latitude, latLng.longitude);
}
}
});
}
/**
* date:2021/7/14
* author:wsm(admin)
* funcation:通过百度定位经纬度获取详细地址
*/
public class BdMapUtils {
// private MKSearch mkSearch;
// 创建地理编码检索实例
static GeoCoder geoCoder = GeoCoder.newInstance();
/**
* 将经度纬度反向译为文字地址
*
* @param lon
* 经度
* @param lat
* 纬度
* @param listener
* OnGetGeoCoderResultListener监听器,对接收到的结果进行处理
*/
public static void reverseGeoParse(double lon, double lat,
OnGetGeoCoderResultListener listener) {
geoCoder.setOnGetGeoCodeResultListener(listener);
LatLng pt1 = new LatLng(lat, lon);
geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(pt1));
}
}
搜索位置请查看demo 点击查看demo链接