你的位置:首页 > 操作系统

[操作系统]Android百度地图API集成一《基础地图》


  在使用百度地图API集成百度地图时,碰到了一些坑,特开此贴记录。。。

  直接开始代码

  1.新建一个工程

  建议使用AS!如果使用ES的话,会出现一个java.lang.NoClassDefFoundError: com.baidu.location.LocationClient 这种错误,在网上百度了半天时间,大都是同样的一些答案,而且都解决不了问题!(这也是我很郁闷的一件事,为什么有些没用的东西,有些人还疯狂的转来转去。。。)所以,最终我还是选择使用了AS。

  2.进入百度地图首页

  1)没有账号的话,申请一个百度账号

  2)下载百度地图示例代码,并解压(下载时可能会下载失败,没办法,多下几次吧。。。)

        

    解压如下

        

 

 

  3.根据官方文档Android地图SDK,集成基础的地图页面

    

 

    1)获取密钥

      * 点击获取密钥

       

 

 

      * 填写信息

       

    

       应用名称(在工程的value >> String.

       SHA1值:命令行窗口 >> keytool -list -v -keystore FilePath (FilePath:C盘 >> 用户 >> .android >> debug.keystore)

          

          

 

          注意:如果运行报错   203:校验码错误

             解决方法:1.将运行后的.apk文件,复制出来,后缀名更改为zip,并解压

                    

                  2.命令行窗口 >> keytool -printcert -file FilePath (FilePath:如上图)

                    

                  3.拿到这个SHA1值,最好是去重新到百度地图开放平台上重新创建一次应用,获得一个新的密钥(记得在AndroidManifest.

 

      包名:AndroidManifest.

  

      * 得到一个密钥

       

     2) 配置

      * 导入jar包

       

 

      * 在build.gradle  >> android  中插入下面代码  

 sourceSets {    main {      jniLibs.srcDirs = ['libs']    }  }

  

      * 在application中添加开发密钥

<meta-data     android:name="com.baidu.lbsapi.API_KEY"     android:value="开发者 key" />   <!-- 这个开发者key,修改成我们上面创建应用获得的密钥即可 -->

      * 添加所需权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_SETTINGS" />

      * 在布局

1 <com.baidu.mapapi.map.MapView 2   android:id="@+id/bmapView" 3   android:layout_width="fill_parent" 4   android:layout_height="fill_parent" 5   android:clickable="true" />

 

      * 在应用程序创建时初始化 SDK引用的Context 全局变量,管理地图生命周期

public class MainActivity extends Activity {   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);   }   @Override   protected void onDestroy() {     super.onDestroy();     //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理     mMapView.onDestroy();   }   @Override   protected void onResume() {     super.onResume();     //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理     mMapView.onResume();     }   @Override   protected void onPause() {     super.onPause();     //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理     mMapView.onPause();     }   }

 

   

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

      android_dev2.jpg