Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(1)
来源:互联网 发布:excel2010 数据有效性 编辑:程序博客网 时间:2024/06/07 08:16
以前的应用使用了百度的定位和百度地图,Android5.0 不能安装,出现了
Installation error: INSTALL_FAILED_DUPLICATE_PERMISSION perm=android.permission.BAIDU_LOCATION_SERVICE pkg=com.palmtrends.yl的错误。原来是android 5.0无法使用以前的百度定位SDK,所以决定重新写一个使用百度地图最新SDK的Demo。
2014年11月07日 百度地图Android SDKv3.2.0发布,2014年12月11日 Android定位SDK:v5.0产品上线,
新增:新增国外(全球)定位能力开放,直接替换开发包无需修改代码;
优化:Android L 适配优化;
修复:修复GPS定位方式未返回地址的问题。
本demo使用的是最新的百度地图AndroidSDK v3.2.0和Android定位SDK:v5.0。最后效果图为Android5.0.1上测试。
1.功能介绍
a 定位功能;
b 添加覆盖物marker,弹出自定义布局的InfoWindow及其点击事件处理;
c 屏幕中心自定义View和PopupWindow,随地图移动显示当前位置信息;d 百度地图POI范围内检索参数PoiBoundSearchOption和附近检索参数PoiNearbySearchOption;
2.申请密钥和安全码
这里就不说了,http://lbsyun.baidu.com/apiconsole/key;
3.第一个百度地图
我这里是直接把BaiduMapsApiDemo中的LocationDemo拷贝过来的,没做任何修改,所以引用的是locSDK_3.1.jar和libBaiduMapSDK_v3_1_0.so,后面会换成最新的。
BaseMapActivity.java
public class BaseMapActivity extends Activity { private static final String TAG = BaseMapActivity.class.getSimpleName();;// 定位相关LocationClient mLocClient;public MyLocationListenner myListener = new MyLocationListenner();private LocationMode mCurrentMode;BitmapDescriptor mCurrentMarker;MapView mMapView;BaiduMap mBaiduMap;// UI相关OnCheckedChangeListener radioButtonListener;Button requestLocButton;boolean isFirstLoc = true;// 是否首次定位@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_location);requestLocButton = (Button) findViewById(R.id.button1);mCurrentMode = LocationMode.NORMAL;requestLocButton.setText("普通");OnClickListener btnClickListener = new OnClickListener() {public void onClick(View v) {switch (mCurrentMode) {case NORMAL:requestLocButton.setText("跟随");mCurrentMode = LocationMode.FOLLOWING;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));break;case COMPASS:requestLocButton.setText("普通");mCurrentMode = LocationMode.NORMAL;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));break;case FOLLOWING:requestLocButton.setText("罗盘");mCurrentMode = LocationMode.COMPASS;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));break;}}};requestLocButton.setOnClickListener(btnClickListener);RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);radioButtonListener = new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if (checkedId == R.id.defaulticon) {// 传入null则,恢复默认图标mCurrentMarker = null;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, null));}if (checkedId == R.id.customicon) {// 修改为自定义markermCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));}}};group.setOnCheckedChangeListener(radioButtonListener);// 地图初始化mMapView = (MapView) findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();// 开启定位图层mBaiduMap.setMyLocationEnabled(true);// 定位初始化mLocClient = new LocationClient(this);mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型option.setScanSpan(1000);mLocClient.setLocOption(option);mLocClient.start();}/** * 定位SDK监听函数 */public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {// map view 销毁后不在处理新接收的位置if (location == null || mMapView == null)return;MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u);}}public void onReceivePoi(BDLocation poiLocation) {}}@Overrideprotected void onPause() {mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {// 退出时销毁定位mLocClient.stop();// 关闭定位图层mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();}}
public class DemoApplication extends Application {@Overridepublic void onCreate() {super.onCreate();SDKInitializer.initialize(this);}}
说明和注意事项:
a DemoApplication中的SDKInitializer.initialize(this)注意:在SDK各功能组件使用之前都需要调用,因此我们建议该方法放在Application的初始化方法中
也可以在应用程序创建时初始化SDK引用Context 全局变量:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); } }b 在application中添加开发密钥和添加所需权限
<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" /> </application>
<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" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:name="com.example.baiduMap.application.DemoApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
如果遇到
Couldn't load locSDK3 from loaderdalvik.system.PathClassLoader...的错误,可以在libs下再建一个armeabi-v7a的文件夹,把armeabi中的文件拷贝过去。如下图:
其他就不做说明了,http://developer.baidu.com/map/index.php?title=androidsdk/guide/hellobaidumap讲得很详细。
最后效果:
Demo下载地址:http://download.csdn.net/detail/yalinfendou/8410587
0 0
- Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(1)
- Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(2)
- Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(3)
- Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(4)
- Android 百度地图 SDK v3.3.0 (二)--- 地图定位和图层展示
- Android百度地图——定位SDK(版本v3.1)(一)
- Android百度地图——定位SDK(版本v3.1)(二)
- Android百度地图——定位SDK(版本v3.1)(三)
- Android 百度地图 最新SDK v3.4.0 基础地图加标记点图层和信息图层
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- 百度地图 Android SDK - 新版本(v3.2.0)正式上线
- Android 百度地图SDK定位
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- IOC autofac
- 用户权限设计(一)
- Android ActionBar创建带图片和文字的menu
- c++创建BMP文件并写入数据
- JAVA实现DES加密
- Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用(1)
- 传统企业沦陷 微智客鼎力相助
- 加盟微智客 携手茁壮成长
- 我的学习之旅(31) schedule和tools目录下的Makefile
- TKPROF解析
- 记录在WIN7 64位安装32位Oracle 11G遇到的问题
- ActionProvider
- 洞察游戏产业:五大权威机构调研报告合集
- clob For input string: "4294967295" oracle