百度地图定位在Activity的实现<百度地图SDK版本 v3.7.3>
来源:互联网 发布:软件安装管理器2015 编辑:程序博客网 时间:2024/05/22 03:31
参照百度地图定位Demo总结百度地图定位详细实现。
主体代码:
package com.example.bdmap;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.MyLocationData.Builder;import com.baidu.mapapi.model.LatLng;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;public class MainActivity extends Activity { //百度地图控件 MapView mMapView; //地图 BaiduMap mBaiduMap; //定位客户端 LocationClient mLocClient; //定位监听器 MyLocationListenner myListener = new MyLocationListenner(); LocationMode mCurrentMode;//定位模式 BitmapDescriptor mCurrentMarker = null;//可自定义图标 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化context SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.bmapView);//获取地图控件 mBaiduMap = mMapView.getMap();//获取地图 mCurrentMode = LocationMode.NORMAL;//定位模式 mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.point_blue); //设置定位配置 MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, false, mCurrentMarker); mBaiduMap.setMyLocationConfigeration(config); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 定位客户端初始化 mLocClient = new LocationClient(this); //定位客户端设置监听器 mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(2000);//定位间隔2秒 mLocClient.setLocOption(option); mLocClient.start(); } /** * 百度定位监听器 */ public class MyLocationListenner implements BDLocationListener{ @Override public void onReceiveLocation(BDLocation location) { // TODO Auto-generated method stub if (location == null || mMapView == null) { return; } MyLocationData.Builder builder = new MyLocationData.Builder(); builder.accuracy(location.getRadius());//显示半径,不设置则地图只显示一个点 //builder.direction(100);此处设置开发者获取到的方向信息,顺时针0-360 builder.latitude(location.getLatitude()); builder.longitude(location.getLongitude()); MyLocationData data = builder.build(); mBaiduMap.setMyLocationData(data); LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder sbuilder = new MapStatus.Builder(); sbuilder.target(ll).zoom(18.0f); //MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); } } @Override protected void onPause() { // 地图的生命周期,同组件的生命周期一起调整 mMapView.onPause(); super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // TODO Auto-generated method stub mLocClient.stop(); mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); }}
主界面布局文件xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.bdmap.MainActivity" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /></LinearLayout>
百度地图定位总结:
1–必备参数:
地图控件、地图层、定位客户端、定位监听器
MapView
BaiduMap
LocationClient
MyLocationListenner (实现了 BDLocationListener)
2–设置定位配置
baiduMap.setMyLocationEnabled(true);//打开定位图层
MyLocationConfiguration(
com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL,
/定位模式/
false, /箭头方向是否和手机一致/
null);//定位点的图标,null为默认的蓝点
mBaiduMap.setMyLocationConfigeration(config);//地图中使用定位配置
3–设置定位客户端和定位客户端的参数
//初始化定位客户端
client = new LocationClient(getActivity());
//定位客户点参数
LocationClientOption option = new LocationClientOption();
//定位客户端参数设定,更多参数设置,查看百度官方文档
option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setScanSpan(5000);//每隔5秒发起一次定位
option.setCoorType(“bd09ll”);// 可选,默认gcj02,设置返回的定位结果坐标系”BD09LL”
option.setOpenGps(true);//是否打开gps
//定位客户端使用参数
client.setLocOption(option);
4–设置定位监听器
a–定位成功判断
// map view 销毁后不在处理新接收的位置
if (location==null || mMapView == null) {
return;
}
b–创建定位点数据
//定位点数据建立者
MyLocationData.Builder builder = new MyLocationData.Builder();
builder.accuracy(location.getRadius());//设置定位点的半径
builder.latitude(location.getLatitude());//获取纬度
builder.longitude(location.getLongitude());//获取经度
MyLocationData data = builder.build();//创建定位点数据
c–地图引用定位点数据
//地图中引入定位点数据,可对该数据进行定位
mBaiduMap.setMyLocationData(data);
d–移动屏幕中心点
//创建定位点的点对象
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
//获取中心点
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll );
//移动屏幕中心点
mBaiduMap.animateMapStatus(msu);
e–定位成功后取消再次定位
// 到此定位成功,没有必要反复定位
// 应该停止客户端再发送定位请求
if (client.isStarted()) {
client.unRegisterLocationListener(listener);
client.stop();
}
5–客户端绑定监听器
listner = new MyBDLocationListener();//初始化定位监听器
client.registerLocationListener(listner);//客户端注册监听器
6–定位客户端启动
client.start();
7–在组件的生命周期中同样对mMapView的生命周期进行管理
@Override
public void onDestroy() {
// TODO Auto-generated method stub
client.stop();
mMapView.onDestroy();
super.onDestroy();
}
- 百度地图定位在Activity的实现<百度地图SDK版本 v3.7.3>
- Android--百度地图定位功能的具体实现<百度地图SDK版本 v3.7.3>
- 百度地图(SDK v3.1.1)和百度定位(SDKv4.2)的实现!
- 百度SDK地图定位
- 定位 -- 百度地图SDK
- 基于百度地图定位SDK实现定位
- Android百度地图——定位SDK(版本v3.1)(一)
- Android百度地图——定位SDK(版本v3.1)(二)
- Android百度地图——定位SDK(版本v3.1)(三)
- 使用百度地图sdk实现定位功能
- 百度地图最新版本sdk使用系列(五)-定位功能的实现
- 百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能
- 百度地图Android定位SDK的API
- Android中级篇之基于百度地图Android SDK v3.4.0开发实现定位
- 百度地图之SDK定位
- 百度地图SDK定位Location
- Android 百度地图SDK定位
- 百度地图 Android定位SDK--【显示地图 】
- HTML5实现webApp中图片轮播的效果(一)之基本使用
- UEFI+GPT安装Win10+Archlinux双系统
- Windows7 下安装Theano (Install Theano in Windows 7)
- 什么是qt,QT Creator, QT SDK, QT Designer
- MySQL入门--mysql的语句规范
- 百度地图定位在Activity的实现<百度地图SDK版本 v3.7.3>
- orb算法的理解网上资源收集
- XML—语法
- Java基础——构造器
- 2015级C++第13周实践项目 多态性和实现
- 排序算法总结
- POJ 1080-Human Gene Functions(LCS变形-最大得分)
- 教师兼干部类
- 第106课: Spark Streaming电商广告点击综合案例黑名单过滤实现