ANDROID專案中嵌入高德地圖(一)配置環境+顯示地圖
阿新 • • 發佈:2019-01-28
最近在做專案中嵌入高德地圖的工作,覺得有必要記錄一下嵌入過程,雖然高德官方給說明文件了,但有寫並不明確需要去查類,查資料,再此把過程記錄一下。
一、顯示地圖
1.配置AndroidManifest.xml檔案
可能需要如下許可權:
<!--允許程式開啟網路套接字-->
<
uses-permission
android:name
=
"android.permission.INTERNET"
/>
<!--允許程式設定內建sd卡的寫許可權-->
<
uses-permission
android:name
=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<!--允許程式獲取網路狀態-->
<
uses-permission
android:name
=
"android.permission.ACCESS_NETWORK_STATE"
/>
<!--允許程式訪問WiFi網路資訊-->
<
uses-permission
android:name
=
"android.permission.ACCESS_WIFI_STATE"
/>
<!--允許程式讀寫手機狀態和身份-->
<
uses-permission
android:name
=
"android.permission.READ_PHONE_STATE"
/>
<!--允許程式訪問CellID或WiFi熱點來獲取粗略的位置-->
<
uses-permission
android:name
=
"android.permission.ACCESS_COARSE_LOCATION"
/>
接下來設定key:
(1)先申請key,需要sha1和包名,得到key如圖:
設定即可:
<
meta-data
android:name
=
"com.amap.api.v2.apikey"
android:value
=
"key"
>
//開發者申請的key
</
meta-data
>
二、匯入包三、寫activity
在activity對應的xml檔案中引入地圖:
activity中程式碼:
package com.example.test;
import com.amap.api.maps2d.AMap;
import com.amap.api.maps2d.MapView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
public class MainActivity extends Activity {
private MapView mapView;
private AMap aMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法必須重寫
init();
}
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
/**
* 方法必須重寫
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
/**
* 方法必須重寫
*/
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
MapView的生命週期方法必須和activity一致,是因為mapView是必須依附activiy存在的。
完~