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百度地图获取经纬度和好友定位相关推荐

  1. android百度地图获取经纬度

    首先登陆百度网址 百度地图开放平台 打开这个网页找到开发文档 这里有个获取经纬度, 在使用定位SDK进行具体开发工作之前,需获取密钥(AK),并对开发工程进行环境配置工作.详细介绍请参考项目创建部分的 ...

  2. vue中调用百度地图 获取经纬度

    项目中,需要实现获取当前位置的经纬度,或者搜索某个位置并获取经纬度信息,我使用的的是vue,地图使用的是百度地图. 默认自动获取当前位置经纬度 拖动小红标 获取经纬度 关键词 查询获取经纬度 前期准备 ...

  3. 百度地图获取经纬度后,获取区域代码和地址

    百度地图获取经纬度后,获取区域代码和地址: function getdistrct_code($location){$url ="api.map.baidu.com/geocoder/v2/ ...

  4. Android百度地图开发(二)定位之自动定位及标注(及定位几日内瓦或坐标4.9E-324问题)

    接上篇Android百度地图开发(一)之Hello BaiduMap 1.环境配置: 新增权限如下 <!-- 这个权限用于进行网络定位--> <uses-permission and ...

  5. Android 百度地图获取定位信息并实时传给后台

    最近公司提了一个小case,因为公司物流师傅配送完货物后,通常回仓库都是空车,而这是严重的资源浪费,所以领导就给了一个小case,实时定位司机路线,先建立司机行车档案,在考虑其他业务,反正也是比较空, ...

  6. Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用

    转载请注明出处http://blog.csdn.net/xiaanming/article/details/11380619 这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOv ...

  7. 百度地图 获取经纬度为4.9E-324

    Android 调用百度地图SDK获取经纬度时发现获取不到数据,显示的是4.9E-324 打印错误码发现为167,于是看了下官方文档 然后发现手机里的定位权限没有打开,打开后就可以获取到经纬度了 位置 ...

  8. vue 百度地图获取经纬度地址

    地图安装看这个https://blog.csdn.net/Iphone886/article/details/127976856?ops_request_misc=&request_id=&a ...

  9. android 百度地图获取两个坐标的实际路线距离

    12.2    青岛  晴 前些天看了下百度地图的api,找到了几个不错的方法,拿出来分享下,导百度地图的jar包后项目较大,没法上传csdn,想要源码的留邮箱. 百度地图有个导航功能,可以获取到两个 ...

最新文章

  1. 我是怎么使用最短路径算法解决动态联动问题的
  2. python配置文件密码管理_python – 可以在django管理员中实现“下次登录时更改密码”类型功能吗?...
  3. 【分析总结】ASP.NET中的状态管理原理
  4. 真人语音朗读软件_才知道,手机还自带文字转语音功能,一键按下便可实现,网友:赞...
  5. WordPress制作插件中使用wp_enqueue_script('jquery')库不起作用解决方法
  6. 微信平台的几种分享方式调研
  7. 数据结构之堆:堆的排序,Python代码实现——13
  8. centos7 yum安装ifconfig
  9. Python文件的操作2
  10. Linux C基础笔记(1)
  11. buffer pool mysql_理解Mysql中的Buffer pool
  12. IoT黑板报0220:三星5G商用关键设备开发完成
  13. 数据挖掘工具weka之weka包的安装
  14. win7 安装IE11 教程
  15. keygen是怎么写出来的。
  16. 一篇文章告诉你什么是GFS(分布式文件系统)
  17. 键盘输入一个整数,判断是否为质数
  18. 移动端KISSY学习
  19. 6.17.用100元人民币兑换10元,5元和一元的纸币共50张,请用穷举法编程计算共有几种兑换方法,每种方法各兑换多少张纸币。
  20. https+webservice

热门文章

  1. Facebook广告投放技巧
  2. IDEA创建Activiti工作流(三、Activiti工作流项目的开发)
  3. 关于erf(误差函数)思考
  4. Python读文件异常
  5. 动态更改PWM波频率并输出一定数量PWM脉冲
  6. 【FinE】测度变换及Radon-Nicodym导数
  7. Unity SKFramework框架(十九)、POI 兴趣点/信息点
  8. VINS-Mono理论学习——IMU预积分 Pre-integration (Jacobian 协方差)
  9. 水仙花问题的两种解决方法
  10. 电容过大导致电压下降_MLCC陶瓷电容详解