Android集成高德地圖那些坑

一、前期準備

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();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章