Android百度地图获取经纬度和好友定位
来源:互联网 发布:usb单片机转换电路 编辑:程序博客网 时间:2024/04/27 21:16
1.新建工程,libs目录下导入baidumapapi_v3_0_0.jar和locSDK_4.2.jar架包,so文件也需要导入。
2.关键类说明
public MapView mapView = null;获取地图(视图)
public BaiduMap baiduMap = null;获取地图引用控件
public LocationClient locationClient = null;实例化定位Location类
BitmapDescriptor mCurrentMarker = null;自定义定位图标
static BDLocation BD_location = null;获取当前经纬度
private LocationBDLocationListener locationListener = new LocationBDLocationListener();注册监听函数
3.获取经纬度
在onCreate方法里使用sdk各组件组件之前初始化context信息,传入ApplicationContext;要在setContentView方法前面实现。
SDKInitializer.initialize(getApplicationContext());
获取百度地图
mapView = (MapView) this.findViewById(R.id.mapView);
baiduMap = mapView.getMap();
// 开启定位图层
baiduMap.setMyLocationEnabled(true);
MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(14.0f);
baiduMap.setMapStatus(msu);
监听当前经纬度位置
baiduMap.setOnMarkerClickListener(new LocationOnMarkerClickListener());
设置定位显示的图标
bdA = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
locationClient = new LocationClient(getApplicationContext()); // 实例化LocationClient类
locationClient.registerLocationListener(locationListener); // 注册监听函数
this.setLocationOption(); // 设置定位参数
locationClient.start(); // 开始定位
以上都在onCreate方法里面实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
/**
* 设置定位参数
*/
private void setLocationOption() {
LocationClientOption option = new LocationClientOption();
// 打开GPS
option.setOpenGps(true);
// 设置定位模式option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
// 返回的定位结果是百度经纬度,默认值gcj02
option.setCoorType("bd09ll");
// 设置发起定位请求的间隔时间为5000ms
option.setScanSpan(5000);
// 返回的定位结果包含地址信息
option.setIsNeedAddress(true);
// 返回的定位结果包含手机机头的方向
option.setNeedDeviceDirect(true);
locationClient.setLocOption(option);
}
设置监听BDLocation
class LocationBDLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mapView == null)
return;
float radius = location.getRadius();
// 纬度
double latitude = location.getLatitude();
// 经度
double longitude = location.getLongitude();
// 此处设置开发者获取到的方向信息,顺时针0-360
MyLocationData locData = new MyLocationData
.Builder().accuracy(radius).direction(100)
.latitude(latitude).longitude(longitude).build();
// 设置定位数据
baiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
// 设置地图中心点以及缩放级别
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);
baiduMap.animateMapStatus(u);
}
BD_location = location;
}
}
4.好友定位
使用OverlayOptions在地图上添加一个浮层,显示好友位置;
private void initOverlay() {
LatLng llA = new LatLng(31.193175, 121.430244);获取好友经纬度
OverlayOptions ooA = new MarkerOptions()设置属性
.position(llA).icon(bdA).zIndex(9);
mMarkerA = (Marker) (baiduMap.addOverlay(ooA));添加浮层
}
注册好友OnMarkerClickListener 监听
class LocationOnMarkerClickListener implements OnMarkerClickListener {
@Override
public boolean onMarkerClick(final Marker latlng) {
Button button = new Button(getApplicationContext());
button.setBackgroundResource(R.drawable.popup);
OnInfoWindowClickListener listener = null;
LatLng position = latlng.getPosition();
if (latlng == mMarkerA) {
Log.i("TAG", "点击事件" + latlng);
点击好友图标显示好友经纬度
button.setText("当前位置:" + "东经" + position.longitude + " 北纬" + position.latitude);
listener = new OnInfoWindowClickListener() {
public void onInfoWindowClick() {
baiduMap.hideInfoWindow();
}
};
}
LatLng ll = latlng.getPosition();
mInfoWindow = new InfoWindow
(BitmapDescriptorFactory.fromView(button), ll, listener);
baiduMap.showInfoWindow(mInfoWindow);
return true;
}
}
5.在onDestroy方法里面销毁定位
@Override
protected void onDestroy() {
// 退出时销毁定位
locationClient.stop();
baiduMap.setMyLocationEnabled(false);
super.onDestroy();
mapView.onDestroy();
mapView = null;
bdA.recycle();
}
- Android百度地图获取经纬度和好友定位
- android使用百度地图定位(获取当前经纬度和地址信息)
- android使用百度地图定位(获取当前经纬度和地址信息)
- Android使用百度地图定位(获取当前经纬度和地址信息)
- Android百度定位获取经纬度
- iOS百度地图 定位,获取当前经纬度
- 百度地图定位经纬度
- android 用百度地图API获取经纬度和地理位置
- android 高德地图定位获取经纬度
- android 基于百度地图api获取经纬度
- android使用百度地图获取当前经纬度
- 获取百度地图经纬度
- 百度地图api获取经纬度和地址
- 百度地图在Activity中以最简单的配置获取定位坐标字符串和经纬度
- 百度地图定位无法获取location的经纬度
- 百度地图--根据经纬度定位
- 百度地图获取特定城市经纬度和经纬度解析
- 利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息
- static 与 const 编译器处理机制
- 【转】Linux大棚版redis入门教程
- AppStore 上传应用icon图片报错
- c#套打
- Android TextView 文字居中
- Android百度地图获取经纬度和好友定位
- c++ word search
- 2014年医疗电子行业新趋势
- 中文相似度匹配算法
- 早报:微软宣布.NET开发环境将开源
- 关于python中的setup.py
- 记录自己学习OpenCV4Android例程,加油
- 利用Spring BeanPostProcessor 初始化时加载数据到缓存
- COCOS2DX引擎深入二————内存管理