百度地图之定位篇
来源:互联网 发布:淘宝免费开店要钱吗 编辑:程序博客网 时间:2024/06/06 02:20
百度地图开发平台:http://lbsyun.baidu.com/
这里讲述的是关于Android Studio工程配置方法:
在工程app/libs目录下放入baidumapapi_vX_X_X.jar,在工程中引用
src/main/jniLibs下的so包,放在jniLibs下自动加载
代码部分:
第一步:创建并配置工程(可根据官网进行配置);
第二步:在AndroidManifest中添加开发密钥所需权限等信息(1)在application中添加开发密钥
<application> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" /> </application>
百度地图定位service
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service>
2)添加所需权限
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_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.INTERNET" />
第三步,在布局xml文件中添加地图控件;
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
主要代码部分:
定位图片:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); // 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext SDKInitializer.initialize(this); //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型. //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。 SDKInitializer.setCoordType(CoordType.BD09LL); }}
定位代码部分:
public class LocationActivity extends AppCompatActivity { private MapView mMapView; private BaiduMap mBaiduMap; // 定位相关 private LocationClient mLocClient; private MyLocationListener myListener = new MyLocationListener(); boolean isFirstLoc = true; // 是否首次定位 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location); // 地图初始化 mMapView = (MapView) findViewById(R.id.map_view); mBaiduMap = mMapView.getMap(); //隐藏地图上百度地图logo图标 //mMapView.removeViewAt(1); // 隐藏地图上比例尺 //mMapView.removeViewAt(2); //隐藏地图上缩放控件 //mMapView.showZoomControls(false); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 定位初始化 mLocClient = new LocationClient(this); mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); //可选,默认false,设置是否使用gps option.setOpenGps(true); //可选,默认gcj02,设置返回的定位结果坐标系 option.setCoorType("bd09ll"); //可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的 option.setScanSpan(1000); //可选,设置是否需要地址信息,默认不需要 option.setIsNeedAddress(true); mLocClient.setLocOption(option); mLocClient.start(); } /** * 定位SDK监听函数 异步获取定位结果 */ public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } if (isFirstLoc){ isFirstLoc = false; LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); //地图状态改变 MapStatus.Builder builder = new MapStatus.Builder(); builder.target(latLng).zoom(17.0f); //target() 设置地图中心点 zoom() 缩放值 //以动画更新地图状态 300ms mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); //Marker标记 BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_gcoding); MarkerOptions markerOption = new MarkerOptions().position(latLng).icon(bitmap); mBaiduMap.addOverlay(markerOption); Toast.makeText(LocationActivity.this, location.getAddrStr(), Toast.LENGTH_SHORT).show(); } } } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); }}
activity_location.xml布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.baidu.mapapi.map.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent"/></LinearLayout>
效果图:
0 0
- 百度地图之定位篇
- 百度地图之定位
- 百度地图之定位
- 百度地图之定位
- 百度地图之定位
- 百度地图之定位
- 百度地图 之 定位
- 百度地图之定位
- 【百度地图API】之定位篇
- 百度地图之简单定位
- 百度地图之自我定位
- 百度地图之定位,最新版
- 百度地图之定位数据
- 百度地图之SDK定位
- 百度地图开发之【定位】
- 百度地图之定位当前
- 百度地图开发之定位
- Android百度地图之定位
- 23种设计模式藏宝图
- 2-sat问题
- java中Map,List与Set的区别
- (三)React Native中Navigation组件的快速入门
- “无法启动此程序,因为计算机中丢失 MSVCR110.dll。尝试重新安装该程序以解决此问题。”
- 百度地图之定位篇
- 连接
- Redis集群的配置
- CvRect、RECT和Rect
- 详解Javascript中prototype属性
- PB程序优化
- MkDocs 文档生成逻辑浅析
- QWT使用出错
- hdu_1054最小点覆盖树上