百度地图最新SDK3.0应用,实现最常用的标注覆盖物以及弹出窗覆盖

一、概述

最新版的百度地图SDK3.0,修改了很多方法,之前的很多方法被简化了,正好在做地图这一块,顺便就使用了最新版的sdk。

下载官方给的demo,发现变化还是挺大的,之前的一些方法都换了,地图的初始化也进行了调整。多了好几个类,具体用法参考下面的例子,详细的说明可参照官方的说明文档。

二、效果图

标注覆盖物效果图:

弹出窗覆盖物:

三、实现过程

大部分是根据官方给的demo来的。

A、配置文件:

第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;

注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。

第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。

通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:

1. 在Eclipse 中选中工程,,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;

2. Project -> clean-> clean all .

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

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

C、添加一些相应的权限

<uses-permission android:name="android.permission.GET_ACCOUNTS" /><uses-permission android:name="android.permission.USE_CREDENTIALS" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /><uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /><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.CHANGE_WIFI_STATE" ><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.BROADCAST_STICKY" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><ses-permission android:name="android.permission.READ_PHONE_STATE" />

D、在布局文件中,加入百度地图的自定义控件

<com.baidu.mapapi.map.MapViewandroid:id="@id/mapview_baidu_address"android:layout_width="match_parent"android:layout_height="match_parent"/>

E、在应用程序创建时初始化 SDK引用的Context 全局变量

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//在使用SDK各组件之前初始化context信息,传入ApplicationContext//注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);}}

注意:在SDK各功能组件使用之前都需要调用

SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中

F、创建地图Activity

不同之前的版本,3.0版的sdk中,mapview对象需要先获取BaiduMap对象才能由BaiduMap对象进行后续的添加覆盖物的操作。

protected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsetContentView(R.layout.d1_activity_address);super.onCreate(savedInstanceState);mMapView = (MapView) findViewById(R.id.mapview_baidu_address);mBaiduMap = mMapView.getMap();//获取BaiduMap类 BaiduMap类才可以添加自定义的图层MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(16.0f);//设置地图的缩放比例mBaiduMap.setMapStatus(msu);//将前面的参数交给BaiduMap类initOverLay(latitude, longitude);// 绘制图层showPop();// 弹出popup}

管理地图生命周期

@Overrideprotected void onPause() {// MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {// MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()mMapView.onResume();super.onResume();} @Override protected void onDestroy() { // MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy() mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); if (mMapView!=null) { mMapView.onDestroy(); mMapView = null; } // 回收 bitmap 资源 bitmap.recycle(); }其中绘制覆盖物,也就是图层的方法代码如下:要做一个积极勇敢乐观的追梦人,永远不说消极的话,

百度地图最新SDK3.0应用,实现最常用的标注覆盖物以及弹出窗覆盖

相关文章:

你感兴趣的文章:

标签云: