百度地图SDK集成及根据坐标实现定位(android studio开发)
百度地图SDK集成及根据坐标实现定位(android studio开发)
1.下载百度地图SDK
链接:/index.php?title=androidsdk
根据自己需求下载SDK
2.集成步骤:
1.ak密钥获取参考百度官网:/index.php?title=androidsdk/guide/create-project/ak
2.android studio配置参考:/index.php?title=androidsdk/guide/create-project/androidstudio
3.配置AndroidMainfest.xml文件配置可参考:/index.php?title=androidsdk/guide/create-project/hellomap
将以下权限拷贝到AndroidMainfest.xml文件中:
在application中添加密钥:value填写获取的key(进入百度控制台)
build.gradle里面需要指定so文件的路径sourceSets{
main{
jniLibs.srcDir 'libs'//说明so的路径为该libs路径,关联所有地图SDK的so文件}
}
4.在application中进行初化:
代码:SDKInitializer.initialize(getApplicationContext());
3.实现定位功能:
在xml文件中添加控件:
java文件中代码:
/***定位SDK监听函数*/public classMyLocationListenner implementsBDLocationListener {
@Overridepublic voidonReceiveLocation(BDLocation location) {
// map view销毁后不在处理新接收的位置if(location == null|| mMapView== null) {
return;}
mCurrentLat= location.getLatitude();mCurrentLon= location.getLongitude();mCurrentAccracy= location.getRadius();locData= newMyLocationData.Builder()
.accuracy(location.getRadius())
//此处设置开发者获取到的方向信息,顺时针0-360.direction(mCurrentDirection).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);if(isFirstLoc) {
isFirstLoc= false;LatLng ll = newLatLng(location.getLatitude(),location.getLongitude());MapStatus.Builder builder = newMapStatus.Builder();builder.target(ll).zoom(18.0f);mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));}
}
public voidonReceivePoi(BDLocation poiLocation) {
}
}mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);//获取传感器管理服务mCurrentMode= LocationMode.NORMAL;//地图显示模式:普通mCurrentMarker= null;//null为默认mCurrentMarker= BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);//自定义显示定位图标accuracyCircleFillColor= 0xAAFFFF88;accuracyCircleStrokeColor= 0xAA00FF00;//地图初始化mMapView= (MapView) findViewById(R.id.bmapView);mBaiduMap= mMapView.getMap();//开启定位图层mBaiduMap.setMyLocationEnabled(true);//定位初始化mLocClient= newLocationClient(this);mLocClient.registerLocationListener(myListener);LocationClientOption option = newLocationClientOption();option.setOpenGps(true);//打开gpsoption.setCoorType("bd09ll");//设置坐标类型option.setScanSpan(1000);mLocClient.setLocOption(option);mLocClient.start();
以上代码可实现通过网络或者gps进行自动定位
4.根据所给百度地图坐标实现定位
测试坐标搜索链接:/maps.htm
例:
java中的代码:
直接传入纬度和经度即可
public voidUpDate(doublecurrentlat, doublecurrentlon) {
locData= newMyLocationData.Builder()
.accuracy(188.0f)
//此处设置开发者获取到的方向信息,顺时针0-360.direction(mCurrentDirection).latitude(currentlat)
.longitude(currentlon).build();mBaiduMap.setMyLocationData(locData);LatLng ll = newLatLng(currentlat,currentlon);MapStatus.Builder builder = newMapStatus.Builder();builder.target(ll).zoom(18.0f);mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));}源码
百度地图SDK集成及根据坐标实现定位(android studio开发)相关教程