Android百度地图获取经纬度和好友定位
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百度地图获取经纬度
首先登陆百度网址 百度地图开放平台 打开这个网页找到开发文档 这里有个获取经纬度, 在使用定位SDK进行具体开发工作之前,需获取密钥(AK),并对开发工程进行环境配置工作.详细介绍请参考项目创建部分的 ...
- vue中调用百度地图 获取经纬度
项目中,需要实现获取当前位置的经纬度,或者搜索某个位置并获取经纬度信息,我使用的的是vue,地图使用的是百度地图. 默认自动获取当前位置经纬度 拖动小红标 获取经纬度 关键词 查询获取经纬度 前期准备 ...
- 百度地图获取经纬度后,获取区域代码和地址
百度地图获取经纬度后,获取区域代码和地址: function getdistrct_code($location){$url ="api.map.baidu.com/geocoder/v2/ ...
- Android百度地图开发(二)定位之自动定位及标注(及定位几日内瓦或坐标4.9E-324问题)
接上篇Android百度地图开发(一)之Hello BaiduMap 1.环境配置: 新增权限如下 <!-- 这个权限用于进行网络定位--> <uses-permission and ...
- Android 百度地图获取定位信息并实时传给后台
最近公司提了一个小case,因为公司物流师傅配送完货物后,通常回仓库都是空车,而这是严重的资源浪费,所以领导就给了一个小case,实时定位司机路线,先建立司机行车档案,在考虑其他业务,反正也是比较空, ...
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
转载请注明出处http://blog.csdn.net/xiaanming/article/details/11380619 这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOv ...
- 百度地图 获取经纬度为4.9E-324
Android 调用百度地图SDK获取经纬度时发现获取不到数据,显示的是4.9E-324 打印错误码发现为167,于是看了下官方文档 然后发现手机里的定位权限没有打开,打开后就可以获取到经纬度了 位置 ...
- vue 百度地图获取经纬度地址
地图安装看这个https://blog.csdn.net/Iphone886/article/details/127976856?ops_request_misc=&request_id=&a ...
- android 百度地图获取两个坐标的实际路线距离
12.2 青岛 晴 前些天看了下百度地图的api,找到了几个不错的方法,拿出来分享下,导百度地图的jar包后项目较大,没法上传csdn,想要源码的留邮箱. 百度地图有个导航功能,可以获取到两个 ...
最新文章
- 我是怎么使用最短路径算法解决动态联动问题的
- python配置文件密码管理_python – 可以在django管理员中实现“下次登录时更改密码”类型功能吗?...
- 【分析总结】ASP.NET中的状态管理原理
- 真人语音朗读软件_才知道,手机还自带文字转语音功能,一键按下便可实现,网友:赞...
- WordPress制作插件中使用wp_enqueue_script('jquery')库不起作用解决方法
- 微信平台的几种分享方式调研
- 数据结构之堆:堆的排序,Python代码实现——13
- centos7 yum安装ifconfig
- Python文件的操作2
- Linux C基础笔记(1)
- buffer pool mysql_理解Mysql中的Buffer pool
- IoT黑板报0220:三星5G商用关键设备开发完成
- 数据挖掘工具weka之weka包的安装
- win7 安装IE11 教程
- keygen是怎么写出来的。
- 一篇文章告诉你什么是GFS(分布式文件系统)
- 键盘输入一个整数,判断是否为质数
- 移动端KISSY学习
- 6.17.用100元人民币兑换10元,5元和一元的纸币共50张,请用穷举法编程计算共有几种兑换方法,每种方法各兑换多少张纸币。
- https+webservice