您的位置:首页 > 移动开发 > Android开发

android开发游记:百度地图SDK基础地图的使用

2016-02-29 09:48 591 查看
上篇讲到使用百度定位SDK来获取当前经纬坐标和地理名称,这一篇主要讲下如何引入地图功能到自己项目,下一篇会实现路线规划和自定义图层展示的功能,同时包括地图视野缩放旋转视野跟随等功能。



使用百度地图SDK必须去官网注册开发者账号并申请key,如果使用百度定位已经有key了,那么不用再创建新的key了,只需要进入自己的应用管理页面设置key支持地图功能就行了,下面传送门:

http://lbsyun.baidu.com/apiconsole/key

百度地图官方说明文档:

http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap

百度地图SDK官方下载地址:

BaiduLBS_AndroidSDK_Sample

其中包含有百度官方提供的demo,官方demo相当详细且更新很及时,不要再在csdn上花积分去下载别人的demo

官方文档把接入方法写的很详细,推荐直接看文档,我只总结一下容易出错的地方和遇到的问题:

首先,导入地图类库,百度地图自3.6以后,采取了分包的策略来管理,把不同的功能分为不同的包,所以这就直接导致以前6个类库和包一下子扩增到现在的36个,不够大小并没有因为分包而变大,还可以根据自己的需要删减,其实更加实用了。

下面分别是3.6的类库,和3.5的类库,你们感受一下:





还是照文档中的全部导入,注意,百度地图的demo中已经包含了百度定位SDK的包,如果使用了其他三方提供的定位或者已经集成了定位功能了,就只导入上面图里带“baidumap”字样的包,凡是带”loc”字样的都是定位相关。定位也是地图中不可或缺的功能,如果使用了百度地图那也推荐使用百度定位sdk。

导入包之后,然后设置AndroidManifest.xml文件并添加相应权限:

<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" />


使用百度地图SDK必须去官网注册开发者账号并申请key,如果使用百度定位已经有key了,只需要进入自己的应用管理页面设置key支持地图功能就行了(官方推荐全部都勾上):



把申请到的key填入AndroidManifest.xml文件中

<application>
节点下添加key常量:

<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />


配置完成了,接下来在你需要用于展示地图的Activity的布局中,添加如下布局:

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


和定位SDK一样,在使用之前必须先初始化:

SDKInitializer.initialize(getApplicationContext());


依然推荐写在Application中:

public class MyApplication extends Application {
public LocationClient mLocationClient;
@Override
public void onCreate() {
super.onCreate();
//baidu loc
mLocationClient = new LocationClient(this.getApplicationContext());
//baidumap 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
SDKInitializer.initialize(this);
}
}


最后在onCreate等各个生命周期回调相应的地图生命周期方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息