高德地图的使用(一)显示
这里主要研究了高德地图的几个功能:
- 地图展示
- 定位
- Marker标记
- poi搜索
- 线路导航
地图展示
首先最重要的是获得高德地图的Key,无论是你自己写东西还是需要运行官网上的Demo,都需要这个key,配置key的地址
这里可以用命令行获取SHA1
keytool -v -list -keystore + 路径 一般苹果的路径是debug.keystore , 密码如果没有改过就是android,从而获取证书指纹(MD5,SHA1,SHA256)
配置AndroidManifest.xml
首先添加声明
<!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"/> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <!--用于申请获取蓝牙信息进行室内定位--> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
其次添加meta-data,这个要放在application里面
<meta-data android:name="com.amap.api.v2.apikey" android:value="你申请的key" />
最后加入service
<service android:name="com.amap.api.location.APSService"></service>
添加依赖
最后一步代码书写
在xml中
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent"> </com.amap.api.maps.MapView> </LinearLayout>
在Activity中
public class ShowMapActivity extends Activity { private AMap aMap; //初始化地图控制器对象 private MapView mMapView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_showmap); initView(); mMapView.onCreate(savedInstanceState); initMap(); } private void initView() { mMapView = (MapView) findViewById(R.id.map); } private void initMap() { if (aMap == null) { aMap = mMapView.getMap(); } } @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制 mMapView.onPause(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态 mMapView.onSaveInstanceState(outState); } }
这样地图就能够显示出来了!