前期预备:运行权限(Android 6.0+)
/** 地图所需权限 :
* roup:android.permission-group.LOCATION(定位)
* android.permission.ACCESS_FINE_LOCATION(通过gps获取定位权限)
* android.permission.ACCESS_COARSE_LOCATION(通过wifi和移动基站获取定位权限)
**/
if (ContextCompat.checkSelfPermission(this,
// 未开启定位权限
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},LOCATION_REQUEST_CODE);
}else {
startLocation();
Toast.makeText(this, "已开启定位权限", Toast.LENGTH_SHORT).show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
//刚才的识别码
case LOCATION_REQUEST_CODE:
//用户同意权限,执行我们的操作
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//开始定位
startLocation();
} else {
//用户拒绝之后,当然我们也可以弹出一个窗口,直接跳转到系统设置页面
Toast.makeText(this, "未开启定位权限,请手动到设置去开启权限", Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
1.显示地图
@Override
public void initView() {
// 保存地图绘制的当前状态
mapDemoMapView.onCreate(new Bundle());
// 初始化地图控制器对象
if (aMap == null){
aMap = mapDemoMapView.getMap();
}
addMark(39.906901,116.397972,"北京","位置");
addMark(34.341568, 108.940174,"西安","位置");
addMark(29.35,106.33,"重庆","位置");
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mapDemoMapView != null){
mapDemoMapView.onDestroy();
}
}
2.绘制点标记:
private void addMark(double latitude, double longitude,String title , String snippet) {
// 经纬度
LatLng latLng = new LatLng(latitude,longitude);
// 绘制点标记
MarkerOptions options = new MarkerOptions();
options.position(latLng)
.title(title)
// 点标记的内容
.snippet(snippet);
// 添加蓝点
Marker marker = aMap.addMarker(options);
}
显示结果:
参考文档:https://lbs.amap.com/api/android-sdk/guide/draw-on-map/draw-marker