百度地图开发(二)配置百度地图SDK

一、下载百度地图SDK

下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download

二、在工程中加入SDK

1.将百度地图SDK中的jar包复制到工程目录下的libs文件夹

2.选择所有jar包,右键->add as library->确定

3.在src/main/目录下新建一个文件夹,存放.so文件【请将v8a、v7a和abi文件夹都复制进去,否则会出现错误:No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create
1.将百度地图SDK所有jar包复制在工程目录下的libs文件夹内

2.选择所有jar包,右键选择 add as library ,点击确认

3.在src/main/目录下建立一个JniLibs的文件夹用来存放so文件(so文件时UNIX的动态链接库)

三、使用百度地图

【摘自百度官方网站:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap

在AndroidManifest中添加开发密钥、所需权限等信息

(1)在application中添加开发密钥

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        //在application中添加开发密钥
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="BmXUnkE56RHrZmdv1GHYDMgtKViFbAUQ" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

(2)添加权限

    //添加所需的权限
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    //获取设备网络状态,禁用后无法获取网络状态
    <uses-permission android:name="android.permission.INTERNET"/>
    //网络权限,当禁用后,无法进行检索等相关业务
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    //读取设备硬件信息,统计数据
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    //读取系统信息,包含系统版本等信息,用作统计
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    //获取设备的网络状态,鉴权所需网络代理
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    //获取统计数据
    <uses-permission android:name="android.permission.CAMERA" />
    //使用步行AR导航,配置Camera权限

(3)在布局xml文件(默认activity_main.xml)中添加地图控件

  <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:focusable="true" />

(4)在应用程序创建时初始化SDK引用的Context 是全局变量

    private MapView mMapView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        //注意该方法要再setContentview方法之前实现
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.bmapView);
    }

(5)创建地图Activity,管理地图生命周期

    protected void onDestroy(){
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestory(),实现地图生命周期管理
        mMapView.onDestroy();
    }
    protected void onResume(){
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume(),实现地图生命周期管理
        mMapView.onResume();
    }

    protected void onPause(){
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause(),实现地图生命周期管理
        mMapView.onPause();
    }

完成以上步骤后,运行程序,即可在您的应用中显示地图

四、常见问题

问题:工程代码显示:找不到jar包

解答:将百度地图jar包复制到工程目录下的libs的同时,还需要add as library,同时在src/main/下新建一个文件夹,用于存放.so文件

问题:No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create

解答:请在src/main/下新建一个文件夹,用于存放.so文件,并且需要将v8a、v7a和abi文件夹都复制进去

问题:SHA1的获取

解答:请参考上文

问题:Failure [INSTALL_FAILED_NO_MATCHING_ABIS]

解答:虚拟设备要选择 arm或者直接打包安装到手机上看效果吧

问题:只显示网格,没有地图

解答:(1)没有网络;

           (2)签名(SHA1)包名、API key等其中任意一项设置不正确;

           (3)AndroidManifest中的配置的不正确:比如API权限、API_KEY、以及uses-permission、meta-data的位置等等

猜你喜欢

转载自blog.csdn.net/weixin_40213204/article/details/83024024