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

猜你喜欢

转载自blog.csdn.net/qq_26014653/article/details/80487793
今日推荐