![Author](https://camo.githubusercontent.com/5b0847c29bfa6d75bff44eafd70c4dc9d30ed93063591940a0e77513d75cbccd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f417574686f722d5a65726f2d3442433531442e737667)
- 在模块目录下的build.gradle文件的dependencies添加
dependencies {
implementation 'com.github.toocms-library:TabMap:1.0.2'
implementation 'com.amap.api:3dmap:7.5.0' // 地图,可选,如依赖必须同时依赖搜索和定位
implementation 'com.amap.api:search:7.3.0' // 搜索,可选,须与地图并存
implementation 'com.amap.api:location:5.0.0' // 定位,可单选,无地图需求时可单独依赖定位包
}
TabMapApi.getLocationApi(this)
.setLocationOption(new AMapLocationClientOption()) // 可选项,自定义定位参数
.start(new LocationListener() {
@Override
public void onLocationSuccess(AMapLocation aMapLocation) {
showDialog("定位结果", aMapLocation.toString());
}
@Override
public void onLocationFail() {
}
});
TabMapApi.getLocationApi(this)
.setLocationOption(new AMapLocationClientOption()) // 可选项,自定义定位参数
.start(new NearestBuildingListener() {
@Override
public void onSearchNearestBuilding(Building building) {
showDialog("当前位置", "地址:" + building.getName() + "\n" + "经度:" + building.getLongitude() + "\n" + "纬度:" + building.getLatitude());
}
});
TabMapApi.getLocationApi(this).stop();
- 添加释放代码(必须,否则会造成第二次定位没有反应)
@Override
protected void onDestroy() {
super.onDestroy();
// 二选一
TabMapApi.getLocationApi(this).release();
// TabMapApi.release(this);
}
TabMapApi.getPoiApi(this)
.doSearchPoi(
latitude, // 纬度
longitude, // 经度
1000, // 查询半径
null, // 关键字
TabMapApi.DEFAULT_POI_TYPE, // POI类型,示例字段为全类型
1, // 页码
10, // 每页返回条数
new PoiSearch.OnPoiSearchListener() {
@Override
public void onPoiSearched(PoiResult poiResult, int i) {
showItemsDialog("周边POI", pois, null);
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
});
TabMapApi.getPoiApi(this)
.doSearchPoi(
"***", // 关键字
TabMapApi.DEFAULT_POI_TYPE, // POI类型,示例字段为全类型
"北京", // 城市
1, // 页码
10, // 每页返回条数
new PoiSearch.OnPoiSearchListener() {
@Override
public void onPoiSearched(PoiResult poiResult, int i) {
showItemsDialog("关键字POI", pois, null);
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
});
- 添加释放代码(必须,否则会造成第二次查询没有反应)
@Override
protected void onDestroy() {
super.onDestroy();
// 二选一
TabMapApi.getPoiApi(this).release();
// TabMapApi.release(this);
}
TabMapApi.getChoosingApi(this)
.options(new PageOptions() // 配置可选项
.setTitlebarBgColor(R.color.black)) // 设置标题栏背景颜色,默认白色
.setBackResId(R.drawable.ic_back) // 返回按钮
.setTitleColor(R.color.white) // 设置标题文字颜色,默认黑色
.setLocationResId(R.drawable.flag_location) // 附近POI页搜索框的位置图标
.setSearchResId(R.drawable.ic_search) // 关键字搜索POI页的放大镜图标
.setMarkerResId(R.drawable.ic_input_arrow) // 设置地图中心点指针图标,默认为高德自带指针
.setCompassEnable(false) // 地图指南针图标是否显示,默认显示
.setLocationEnable(false) // 地图定位按钮是否显示,默认显示
.setZoomControlsEnable(true) // 设置缩放按钮是否显示,默认不显示
.setMapZoomLevel(18) // 设置定位完毕的地图缩放级别,默认18
.startPreciseLocationAty(new LocationResultListener() {
@Override
public void onLocationResult(LocationResult result) {
showDialog("定位结果", "名称:" + result.getName() + "\n" + "地址:" + result.getAddress() + "\n" + "经度:" + result.getLongitude() + "\n" + "纬度:" + result.getLatitude());
}
@Override
public void onLocationCancel() {
showToast("取消定位");
}
});
- 附近POI/搜索POI(一般用于用户端选择配送地址)
TabMapApi.getChoosingApi(this)
.options(new PageOptions() // 配置可选项
.setTitlebarBgColor(R.color.black)) // 设置标题栏背景颜色,默认白色
.setBackResId(R.drawable.ic_back) // 返回按钮
.setTitleColor(R.color.white) // 设置标题文字颜色,默认黑色
.setLocationResId(R.drawable.flag_location) // 附近POI页搜索框的位置图标
.setSearchResId(R.drawable.ic_search) // 关键字搜索POI页的放大镜图标
.setMarkerResId(R.drawable.ic_input_arrow) // 设置地图中心点指针图标,默认为高德自带指针
.setCompassEnable(false) // 地图指南针图标是否显示,默认显示
.setLocationEnable(false) // 地图定位按钮是否显示,默认显示
.setZoomControlsEnable(true) // 设置缩放按钮是否显示,默认不显示
.setMapZoomLevel(18) // 设置定位完毕的地图缩放级别,默认18
.startNearPoiAty(new PoiResultListener() {
@Override
public void onPoiResult(PoiResult result) {
showDialog("定位结果", "名称:" + result.getName() + "\n" + "地址:" + result.getAddress() + "\n" + "经度:" + result.getLongitude() + "\n" + "纬度:" + result.getLatitude());
}
@Override
public void onPoiCancel() {
showToast("取消选择");
}
});
- 添加释放代码(非必须,理论上可能会造成第二次启动没有反应,但实测没有发生)
@Override
protected void onDestroy() {
super.onDestroy();
// 二选一
TabMapApi.getChoosingApi(this).release();
// TabMapApi.release(this);
}