1.首先去高德地图开发者官网下载所需的SDK,根据自己的需要下载SDK。高德官网会把下载的SDK包合并为一个集成包。
高德地图开放平台官网:https://lbs.amap.com/
2.将下载的集成包解压,将其中AMap3DMap_6.7.0_AMapNavi_6.6.0_AMapSearch_6.5.0_AMapLocation_4.4.0_20190214.jar复制到libs目录下
然后选中这个jar包,右键弹出菜单,选择菜单最底端的add as libary。这样jar包就成功添加到工程中了。
然后添加so包,在main目录下新建文件夹jinLibs,将刚才解压出来的全部so包,复制添加到jinLibs文件夹下,此时就完成高德地图SDK在AndroidStudio的集成。
3.在manifests中添加<meta-data android:name="com.amap.api.v2.apikey" android:value="your key"/>
然后在manifests中添加所需要权限,比如网络定位等。
5.在activity_main布局文件中添加MapView
4.在MainActivity中实现地图和定位权限申请
public class MainActivity extends AppCompatActivity implements LocationSource,AMapLocationListener{
MapView mapView = null;//地图视图
AMap aMap;//地图对象
OnLocationChangedListener mListener;//定位监听
AMapLocationClient client;//定位者
AMapLocationClientOption option;//定位参数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.map);
mapView.onCreate(savedInstanceState);//创建地图
init();
}
//Android6.0之后动态申请权限(申请定位权限)
@Override
public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode,permissions,grantResults,this);
}
private void init(){
aMap = mapView.getMap();//获取地图对象
UiSettings settings = aMap.getUiSettings();//获取定位按钮
aMap.setLocationSource(this);//设置定位按钮
settings.setMyLocationButtonEnabled(true);//显示定位按钮
aMap.setMyLocationEnabled(true);//显示定位层并可触发定位
}
@Override
public void activate(OnLocationChangedListener onLocationChangedListener){
mListener = onLocationChangedListener;
client = new AMapLocationClient(this);//定位回调监听
client.setLocationListener(this);
option = new AMapLocationClientOption();
option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//高精度定位
client.setLocationOption(option);//加载定位参数
client.startLocation();//开始定位
}
//停止定位
@Override
public void deactivate(){
mListener = null;
if (client != null){
client.stopLocation();
client.onDestroy();
}
client = null;
}
//定位成功后回调函数
@Override
public void onLocationChanged(AMapLocation aMapLocation){
if (mListener != null){
if (aMapLocation != null&&aMapLocation.getErrorCode() == 0){
Log.e("经度",String.valueOf(aMapLocation.getLatitude()));
Log.e("纬度",String.valueOf(aMapLocation.getLongitude()));
Log.e("地址",aMapLocation.getAddress());
}
else Log.e("定位结果","定位失敗");
}
}
@Override
protected void onDestroy(){
super.onDestroy();
mapView.onDestroy();
if (client !=null){
client.onDestroy();
}
}
}
至此可以实现地图的显示和定位功能。