开发指南:

http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0/%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97

申请KEY:

http://dev.baidu.com/wiki/static/imap/key/

API,文档和例子下载:

http://dev.baidu.com/wiki/imap/index.php?title=Android%E5%B9%B3%E5%8F%B0/%E7%9B%B8%E5%85%B3%E4%B8%8B%E8%BD%BD


目前采用的定位方式有:

GPS定位:与您手机的硬件条件相关,一般在户外时才能生效。定位精度一般在5-10米,不需要通过网络。可以在手机系统的设置中打开或者关闭。
基站定位:和手机信号及网络状况相关,定位精度与GPS相比较差,但在一般的室内仍可生效。
Wi-Fi定位:和手机所处的Wi-Fi网络相关,定位精度与GPS相比较差,大多在室内生效。

不能定位问题:

发现没装SIM卡或是废卡时,定位经常会出现不能定位的问题,onLocationChanged不会回调。

正确的方式需要SIM卡,并且需要网络(wifi | GPRS GPRS偏差较大),而设置-位置里的选项并没有效果,勾不勾都无所谓,可能baidu底层处理了?

接口调用:

接口需要在UI主线程里调用,因为需要用到消息循环,当然你可以在你调用的线程里创建已个消息循环。

GeoPoint为什么是以微度的整数形式存储:

GeoPoint(int latitudeE6, int longitudeE6)

用整形存储,加快运行速度  int的运算要比浮点快很多。


下面的代码是简单的实现了定位和POI的多关键字搜索:需要在UI线程里调用相关方法。

public class BaiduMapManager {/** Baidu map开关 */public static final boolean isAddBaiduMap = true;/** 申请的Key */public static final String KEY = "26E61E1DF0E776336AF17E9BF1FC9979EA713CCE";private static BMapManager bMapManager;private static LocationListener mLocationListener;/** 搜索模块,也可去掉地图模块独立使用   */private static MKSearch mSearch;private static boolean hasGetLocation;private static Location lastLocation;private static void debug(String msg) {DebugManager.Log_debug("Baidu", msg);}public static void init() {if (!isAddBaiduMap) {return;}bMapManager = new BMapManager(AppConfig.getContext());bMapManager.init(KEY, new MKGeneralListener() {/*** 返回网络错误*/@Overridepublic void onGetPermissionState(int iError) {debug("ERROR id:" + iError);}/*** 返回授权验证错误* 300 = 验证失败*/@Overridepublic void onGetNetworkState(int iError) {debug("ERROR id:" + iError);}});      // 设置回调结果容量MKSearch.setPoiPageCapacity(10);// 初始化搜索模块,注册事件监听mSearch = new MKSearch();           mSearch.init(bMapManager, new MKSearchListener(){@Overridepublic void onGetPoiResult(MKPoiResult res, int type, int error) {// 错误号可参考MKEvent中的定义if (error != 0 || res == null) {GameConfig.showToast("抱歉,未找到结果");return;}ArrayList<MKPoiResult> result = res.getMultiPoiResult();if (result == null) {GameConfig.showToast("抱歉,未找到结果");return;} GameConfig.showToast("成功找到" + result.size() + "条结果!");// 用完了马上关上,否则手机一直处于定位状态!!!              stop();}@Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResult res,int error) {}@Overridepublic void onGetTransitRouteResult(MKTransitRouteResult res,int error) {}@Overridepublic void onGetWalkingRouteResult(MKWalkingRouteResult res,int error) {}@Overridepublic void onGetAddrResult(MKAddrInfo res, int error) {}         });// 注册定位事件mLocationListener = new LocationListener(){@Overridepublic void onLocationChanged(Location location) {lastLocation = location;seachPOI(lastLocation);}   };}private static void seachPOI(Location location) {if(location == null) {GameConfig.showToast("抱歉,未找到结果");return;}if(!hasGetLocation) {hasGetLocation = true;String strLog = String.format("您当前的位置:\r\n" +"纬度:%f\r\n" +"经度:%f",location.getLatitude(),location.getLongitude());debug(strLog);// 关键词(1.10]String[] keys = new String[] { "公园", "KTV", "电影院", "景点","餐馆", "麦当劳", "肯德基", "必胜客", "饭店", "医院" };// 用整形存储,加快运行速度  int的运算要比浮点快很多GeoPoint gp = new GeoPoint((int) (location.getLatitude() * 1E6),(int) (location.getLongitude() * 1E6));mSearch.poiMultiSearchNearBy(keys, gp, 5000);}     }/*** 请在程序推出前调用*/public static void destroy() {if (!isAddBaiduMap) {return;}if (bMapManager != null) {bMapManager.destroy();bMapManager = null;}}/*** 开启百度地图API*/public static void start() {if (!isAddBaiduMap) {return;}hasGetLocation = false;ProgressDialog pd = GameConfig.getProgressDialog();pd.setTitle("正在获取地理位置信息!");pd.setIcon(0);pd.setMessage(AppConfig.getResources().getString(R.string.wait));pd.setCancelable(true);GameConfig.sendMessage(GameConfig.MSG_PROGRESSDIALOG_SHOW);if (bMapManager != null) {// 注册ListenerbMapManager.getLocationManager().requestLocationUpdates(mLocationListener);bMapManager.start();        lastLocation = bMapManager.getLocationManager().getLocationInfo();if(lastLocation != null) {seachPOI(lastLocation);}}}/*** 终止百度地图API,调用此函数后,不会发生回调*/public static void stop() {if (!isAddBaiduMap) {return;}if (bMapManager != null) {// 移除listenerbMapManager.getLocationManager().removeUpdates(mLocationListener);bMapManager.stop();}GameConfig.sendMessage(GameConfig.MSG_PROGRESSDIALOG_HIDE);}
}

baidu地图API相关推荐

  1. java 简单使用baidu地图API进行简单操作

    1.获取百度地图AK [链接网址:百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com)](百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com ...

  2. R调用BaiDu地图API

    由于ggmap不能正常使用 考虑使用R调用百度地图的API R中调用地图接口的方法 在R中本来可以直接使用Google地图对应的包RgoogleMaps:ggmap 参考: http://cran.r ...

  3. Android baidu地图定位实现签到打卡功能(附源码)

    导语 本章根据baidu地图API,实现打卡功能.用到了基础地图.覆盖物.定位图层.陀螺仪方法.悬浮信息弹框. (这里原创!!!转载请表明我的原文地址~) baidu地图API地址  :Android ...

  4. 调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview

    调用百度地图API出现 error inflating class com.baidu.mapapi.map.mapview 问题如下 本来以为解决了,但后来重新运行了一下,又坏了,然后改成原来的样子 ...

  5. 【百度地图API】——如何用label制作简易的房产标签

    摘要: 最近,API爱好者们纷纷说,自定义marker太复杂了!不仅定义复杂,连所有的dom事件都要自己重新定义.有没有快速简易创建房产标签的方法呢? 答案当然是有的啦~ 我们可以利用label嘛! ...

  6. 【百度地图API】如何制作班级地理通讯录?LBS通讯录

    原文:[百度地图API]如何制作班级地理通讯录?LBS通讯录 摘要:班级通讯录必备的功能,比如人员列表,人员地理位置标注,展示复杂信息窗口,公交和驾车等.一般班级人员都不会超过300个,因为可以高效地 ...

  7. 将baidu地图中的baidu logo去掉

    Web 最简单方法,将logo的css样式改为display:none即可 <!DOCTYPE html> <html> <head><meta charse ...

  8. 微信小程序城市定位(百度地图API)

    概述 微信小程序提供一些API(地址)用于获取当前用户的地理位置等信息,但无论是wx.getLocation,还是wx.chooseLocation均没有单独的字段表示国家与城市信息,仅有经纬度信息. ...

  9. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

最新文章

  1. 微信小程序架构分析 (上)
  2. python环境变量配置_Anaconda从下载到环境变量配置(windows)
  3. Apache Shiro 1.6.0 发布!修复绕过授权高危漏洞
  4. Fedora 30用dnf安装OpenCV及g++编译其应用程序
  5. 深入分析H2数据库控制台中无需身份验证的RCE漏洞
  6. LINUX下软件包的安装与使用
  7. JZOJ__Day 7:【普及模拟】蚂蚁
  8. python 动态编译代码,Python:在运行时动态创建函数
  9. 分享三个USB抓包软件---Bus Hound,USBlyzer 和-USBTrace
  10. 实现putchar put_str put_int
  11. 地图投影——高斯-克吕格投影、墨卡托投影和UTM投影
  12. 快速获取InputBox选中区域的单个单元格引用地址
  13. 服务器 t610硬盘开关,戴尔服务器T610
  14. Unity材质:玻璃
  15. 花儿还有重开日,人生没有再少年.
  16. 一图抵千言《ARouter简明扼要原理分析》
  17. JVM基础知识整理----体系结构和运行时数据区
  18. Mysql关键字之Union all说明
  19. 基于php的校园视频点播系统
  20. 恶意驱动锁首手动处理的两种方法

热门文章

  1. 恐秋的C++学习笔记(完结)
  2. 踩坑记录Referrer Policy: no-referrer-when-downgrade
  3. Nginx高可用配置
  4. 【2019 ITIP】Spatial-Temporal Attention-Aware Learning for Video-Based Person Re-Identification
  5. 无线渗透----专属字典打造
  6. django admin自定义
  7. 如何在 CVPR 上查看 Papers
  8. 积分兑换商城系统4大优势
  9. windos10的设备管理器无法添加过时硬件
  10. IBM openblockchain学习(一)--obc-peer环境搭建