BaiduMap 使用小结

来源:互联网 发布:原画梦的网络课怎么样 编辑:程序博客网 时间:2024/04/28 01:05
最好根据百度官方文档 来看此文

百度地图API:
LBS - Location Based Services
POI - Point Of Interest 兴趣点


百度地图官方文档:http://developer.baidu.com/map
百度地图根据经纬度 获取位置信息api:http://api.map.baidu.com/geocoder?output=json&location=latitude,longitude&key=AK




1)新建App,获取秘钥
安全码:安全码的组成是 Android签名证书的SHA1签名+";"+包名
获取安全码:1)进入.android 目录,输入指令keytool -list -v -keystore debug.keystore,密码是 android。keytool 是jdk自带工具,debug.keystore是Android签名证书文件


2)导包
src/main/目录下新建 jniLibs目录,放入so文件(armeabi/)
libs下 导入jar包


3)关于混淆
在集成地图SDK 的应用中,在打包混淆的时候,需要注意与地图相关的方法不可被混淆
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}    
-dontwarn com.baidu.**


4)在application标签下添加 meta-data name=com.baidu.lbsapi.API_KEY value=AK
添加权限


5)地图的使用 都需要先 调用 SDKInitializer.initialize(appcontext)


6)注意 地图控件的 生命周期方法onResume onPause onDestory onCreate就是find


7)在地图上创建一个 MarkerOptions(包括 创建,地图的缩放、定位,InfoWindow的显示)
//创建一个 Bitmap
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromResource(id)


MarkerOptions markerOptions = new MarkOptions()
.position(new Latlng(0,0))
.icon(bitmapDescriptor)
.title("title")
.extraInfo(bundle);
baiduMap.addOerlay(markerOptions);




//设置地图显示 样式
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newMapStatus(
new MapStutas.Builder()
.overlook(15) //俯视角度
.target(latlng)//中心点
.zoom(16) //缩放到 等级16
.build()
);
baiduMap.setMapStatus(mapStatusUpdates);


//设置图层点击事件
baiduMap.setOnMarkerClickListener(new ..){
onMarkerClick(Marker marker){
TextView tv = new TextView(context);

//设置textView点击事件, 隐藏InfoWindow
tv.setOnClickListener(new ..){
onClick(v){ baiduMap.hideInfoWindow(); }
}

//显示 infoWindow
baiduMap.showInfoWindow(new InfoWindow(tv, marker.positon(), -30));
}
}


8)POI(Point Of Interest)兴趣点检索
所有的 POI检索 都是用的 PoiSearch类
//初始化 并设置 监听事件
poiSearch = PoiSearch.newInstance();
poiSearch.setOnGetPoiSearchResultListener(this);


//使用POI 检索,查询周边
poiSearch.searchNearBy(
new PoiNearBySearchOption()
.location(latlng)
.keyword(keyword)
.radius(5000) //单位 m
.pageCapacity(10)
.pageNum(1)
);




//查询 城市
poiSearch.searchCity(
new PoiCitySearchOption()
.city("北京")
.keyword(keyword)
.pageCatacity(10)
.pageNum(1)
);


//区域查询 也一样, 线路查询没有看,需要补充




//检索需要重写的方法
public void OnGetPoiResult(PoiResult poiResult){
if(poiResult.error == SearchResult.ERROR.NO_ERROR){
//清除 旧数据
baiduMap.clear();

List<PoiInfo> poiInfos = poiResult.getAllPoi();

// 将第一个POI 作为地图的中心
baiduMap.setMapStatus(MapStatusFactory.newLatlng(poiInfo.get(0).location));

//利用 PoiOverlay 将地图缩放到 正好放下所有查询结果的大小 和 位置
PoiOverlay poiOverlay = new PoiOverlay(baiduMap);
poiOverlay.addData(poiResult);
poiOverlay.addToMap(baiduMap);
poiOverlay.zoomToSpan();

baiduMap.clear();//将上面 poiOverlay图层上的 marker 清除

//可以通过markerOptions.extraInfo(args) 来保存 设置 一些数据

}
}


8)定位(可以脱离 百度地图 单独使用)


要求要与baidumap 最好 是相同的版本号
1、将 locSDK_5.1.jar jar包拷入 libs文件夹
2、将 so问价 拷入 main/jniLibs 文件夹下,所有的适配 类型的 文件夹都拷进去


//初始化 并注册监听事件
LocationClient location = new LocationClient(getApplicationContext());
location.registerLocationListener(locationListener);


//配置 定位SDK 参数
LocationClientOption option = new LocationOption();
option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);


option.setCoorType("bd09ll");//设置 定位坐标系
option.setScanSpan(1000);   //定位的 时间 间隔
option.setOpenGps(true);
option.setIgnoreKillProcess(false);     //定位SDK,在内部 实际上是 一个Service,并放到独立进程,是否在stop 的时候杀死此进程,默认杀死


location.setLocOption(option);
location.start();




//监听事件
locationListener = new BDLocationListener{
public void onReceiverLocation(BDLocation location){
//location中有各种需要的参数

//可根据 百度提供的api来根据 经纬度获取各种信息
//http://api.map.baidu.com/geocoder?output=json&location=latitude,longitude&key=AK
}


}



















0 0
原创粉丝点击