美文网首页
百度地图(一)

百度地图(一)

作者: 沈溺_16e5 | 来源:发表于2019-04-24 12:55 被阅读0次

    http://lbsyun.baidu.com/

    1、点击控制台,创建应用

    1.填写应用名称,选中类型为:Android SDK,发布版/开发版SHA1参考百度文档完成
    2.获取SHA1值

    调试版本(debug)和发布版本(release)下的 SHA1 值是不同的,发布 apk 时需要根据发布 apk 对应的 keystore 重新配置 Key。(注意:我们这里使用的是调试版本,在开发时请使用调试版本) 。
    a.将keystore拖到桌面,win+R,输入cmd进入Windows则进入cmd控制台,继续在控制台输入命令:
    调试版本使用指令:keytool -list -v -keystore debug.keystore
    发布版本请使用指令:keytool -list -v -keystore apk 的 keystore
    b.输入口令:
    调试版本默认密码是: android,发布模式的密码是apk的keystore设置的密码。输入密钥后回车(如果没设置密码,可直接回车),此时可在控制台显示的信息中获取SHA1值,如下图所示:


    94ee8974-78ab-4f0f-8b38-ff78dde72bfc.png
    将信息全部填入,提交
    1e503550-d78e-49e6-b265-417590fec9cf.png
    点击复制AK
    00026d9a-b3c5-49e7-abec-2d3159a732d6.png

    2、Android Studio配置

    1.下载开发包,选中自己想要功能的开发包

    http://lbsyun.baidu.com/index.php?title=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar

    55ce4cbf-3111-48d4-b7bb-2774bf1c96a4.jpg
    2.将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理),百度有坑,开发包总下载失败或者不全,从demo里面搞对应的jar和so文件

    a、添加jar文件
    打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:


    0.1423078108747955.png

    添加完之后别忘了在 module 的 build.gradle 文件中添加:

    implementation files('libs/BaiduLBS_Android.jar')
    

    b.添加so文件
    有两种方法可以往项目中添加so文件。
    方法一:
    在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:


    0.4321825795045031.png

    在app目录下的build.gradle文件中android块中配置sourceSets标签和signingConfigs标签,如果没有使用该标签则新增,详细配置代码如下:

    记得把debug.keystore文件导进来,放到项目下面就行(就是demo下面)
    sourceSets {
            main {
                jniLibs.srcDir 'libs'
            }
     }
    signingConfigs {
            debug {
                storeFile file('debug.keystore')
                storePassword "android"
                keyAlias "androiddebugkey"
                keyPassword "android"
            }
    }
    
    注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。

    方法二:

    在src/main/目录下新建jniLibs目录(如果您的项目中已经包含该目录不用重复创建),在下载的开发包中拷贝项目中需要的CPU架构对应的so文件文件夹到jniLibs目录,如图: 0.7173142199611884.png
    资源说明

    V5.1.0版本起,为了优化SDK的jar包体积,将一些Demo中用到的图片资源文件从SDK的jar包中移到了Demo的资源文件路径下,若有依赖,请在Demo中的资源路径获取,源码Demo下载。路径如下:
    BaiduMapsApiASDemo/app/src/main/assets/
    注意:若您下载的开发包是步骑行导航的,在解压后的开发包中会包含一个assets目录,您需要将该目录下的png文件拷贝至您的项目的assets目录下。

    assets文件夹要放在main文件夹下,千万不要放在res文件夹下

    3、配置AndroidManifest.xml文件

    http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-map/showmap
    1.在<application>中加入如下代码配置开发密钥(AK):
    使用定位SDK,需在Application标签中声明service组件,每个App拥有自己单独的定位service,代码如下:

    <application
            android:name=".MyApplication"
            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">
    
            <meta-data  
            android:name="com.baidu.lbsapi.API_KEY"  
            android:value="开发者 key" />
    
            <service
                android:name="com.baidu.location.f"
                android:enabled="true"
                android:process=":remote"></service>
    
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    1. 在<application/>外部添加如下权限声明:
    <!-- 这个权限用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
        <!-- 这个权限用于访问GPS定位-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
        <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
        <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
        <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
        <!-- 用于读取手机当前的状态-->
        <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
        <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
        <!-- 访问网络,网络定位需要上网-->
        <uses-permission android:name="android.permission.INTERNET" />
        <!-- SD卡读取权限,用户写入离线定位数据-->
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
            tools:ignore="ProtectedPermissions"></uses-permission>
    

    4、地图初始化

    新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。示例代码如下:

    import android.app.Application;
    
    import com.baidu.mapapi.CoordType;
    import com.baidu.mapapi.SDKInitializer;
    
    public class MyApplication extends Application{
        @Override
        public void onCreate() {
            super.onCreate();
            //在使用SDK各组件之前初始化context信息,传入ApplicationContext
            SDKInitializer.initialize(this);
            //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
            //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
            SDKInitializer.setCoordType(CoordType.BD09LL);
        }
    
    }
    
    在AndroidManifest.xml文件中声明该Application

    在布局文件中添加地图容器

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

    初始化权限,在Activity的onCreate()方法中调用initPermission()

    private void initPermission() {
            String[] per = {Manifest.permission.READ_PHONE_STATE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.ACCESS_COARSE_LOCATION,
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.CAMERA};
    
            ActivityCompat.requestPermissions(this, per, 100);
    }
    

    创建地图Activity,管理MapView生命周期

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private MapView mMapView = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView() {
            mMapView = (MapView) findViewById(R.id.bmapView);
    
            mMapView.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.bmapView:
    
                    break;
            }
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
            mMapView.onResume();
        }
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
            mMapView.onPause();
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
            mMapView.onDestroy();
        }
    
    }
    
    完成以上工作即可在您的应用中显示地图:
    MapViews.png

    相关文章

      网友评论

          本文标题:百度地图(一)

          本文链接:https://www.haomeiwen.com/subject/gngwgqtx.html