一、前期準備
1.前期的註冊和創建應用我不說了,這塊仔細一點就好;
2.然後從官網下載它的demo,我下載的demo名稱叫“AMap_Android_API_Location_Demo”:
注意啊小夥伴們,不要看到它裏面有build.gradle,就以爲它是Android Studio項目,然後直接將lib裏的jar包和so文件直接放到項目中(在Android Studio是錯誤的),Android Studio裏so文件應該放在jinLibs(如果沒有就新建)
3.libs裏的jar包要添加到依賴庫
二、代碼部分
1.佈局文件
<com.amap.api.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" />
沒什麼好說的,就一個MapView
2.邏輯代碼部分
//地圖顯示 private AMap aMap; private MapView map;
protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_map); initLocation();//初始化定位參數 //checkLocationPermission();//初始化請求權限,存儲權限 map = (MapView) findViewById(R.id.map); map.onCreate(savedInstanceState);// 此方法必須重寫 if (aMap == null) aMap = map.getMap(); initlick(); }
注意紅色文字部分,它和百度地圖不一樣,請注意
//初始化定位參數部分 private void initLocation() { //初始化client mlocationClient = new AMapLocationClient(this.getApplicationContext()); // 設置定位監聽 mlocationClient.setLocationListener(this); //定位參數 mLocationOption = new AMapLocationClientOption(); //設置爲高精度定位模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //設置爲單次定位 mLocationOption.setOnceLocation(true); //設置定位參數 mlocationClient.setLocationOption(mLocationOption); }
private void checkLocationPermission() { // 檢查是否有定位權限 // 檢查權限的方法: ContextCompat.checkSelfPermission()兩個參數分別是Context和權限名. // 返回PERMISSION_GRANTED是有權限,PERMISSION_DENIED沒有權限 if (ContextCompat.checkSelfPermission(MyMapActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { //沒有權限,向系統申請該權限。 Log.i("MY", "沒有權限"); //這裏添加向系統請求權限操作 } else { //已經獲得權限,則執行定位請求。 Toast.makeText(MyMapActivity.this, "已獲取定位權限", Toast.LENGTH_SHORT).show(); startLocation();
/** * 開始定位 */ private void startLocation() { // 啓動定位 mlocationClient.startLocation(); Log.i("MY", "startLocation"); }
@Override protected void onResume() { super.onResume(); map.onResume(); } @Override protected void onPause() { super.onPause(); map.onPause(); } @Override protected void onDestroy() { super.onDestroy(); map.onDestroy(); }