转自博文:百度地图API的IP定位城市和浏览器定位 http://blog.csdn.net/suixufeng/article/details/13511761

百度地图API提供了Geolocation 和 LocalCity两个服务类。

这俩API可以分别供用户在JavaScript中进行定位和城市确认。

1 本质上,Geolocation这个类是使用了支持HTML5浏览器提供的Geolocation API 来进行定位的。目前Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位(因为他们支持HTML5)。

2 本质上,LocalCity这个类是利用用户IP地址去百度数据库里查询得到IP所在的城市。

关于第一点的原理,在此解释下:在支持HTML5的浏览器下,navigator对象下有一个属性----geolocation,而 geolocation属性又有个方法getCurrentPosition(回调函数1,回调函数2)可以通过浏览器向设备发起定位请求,浏览器就会让 设备发送相关指令到附近上网设备,上网设备返回定位信息给用户设备,浏览器就获得了用户位置。

当浏览器获得定位信息成功,则navigator.geolocation.getCurrentPosition(回调函数1,回调函数2); 中的回调函数1执行,如果定位失败,则回调函数2执行。

若定位成功,则自动把定位结果对象作为参数传递给回调函数1,。 若定位失败,则自动把错误对象传递给回调函数2.  所以在回调函数2中可通过error.code 获取到错误码。(假设形参名为error)。

如下代码就是用HTML5获取定位信息,并把成功定位交给showPosition处理,把错误定位交给showError处理。

function getLocation(){

if (navigator.geolocation){

navigator.geolocation.getCurrentPosition(showPosition,showError);

}else{

  x.innerHTML="Geolocation is not supported by this browser.";} //浏览器不支持HTML5.

}

注意:百度地图提供的API使用起来与HTML5原生的定位代码是不同的。

下面是百度定位代码:

<script type="text/javascript">

var map = new BMap.Map("allmap");

var point = new BMap.Point(116.331398,39.897445);

map.centerAndZoom(point,12);

var geolocation = new BMap.Geolocation();  //实例化浏览器定位对象。

//下面是getCurrentPosition方法。调用该对象的 getCurrentPosition(),与HTML5不同的是,这个方法原型是 getCurrentPosition(callback:function[, options: PositionOptions]),也就是说无论成功与否都执行回调函数1,第二个参数是关于位置的选项。 因此能否定位成功需要在回调函数1中自己判断。

geolocation.getCurrentPosition(function(r){   //定位结果对象会传递给r变量

if(this.getStatus() == BMAP_STATUS_SUCCESS){  //通过Geolocation类的getStatus()可以判断是否成功定位。

var mk = new BMap.Marker(r.point);    //基于定位的这个点的点位创建marker

map.addOverlay(mk);    //将marker作为覆盖物添加到map地图上

map.panTo(r.point);   //将地图中心点移动到定位的这个点位置。注意是r.point而不是r对象。

alert('您的位置:'+r.point.lng+','+r.point.lat);  //r对象的point属性也是一个对象,这个对象的lng属性表示经度,lat属性表示纬度。

} else {

alert('failed'+this.getStatus());

}

},{enableHighAccuracy: true})

//关于状态码

//BMAP_STATUS_SUCCESS 检索成功。对应数值“0”。

//BMAP_STATUS_CITY_LIST 城市列表。对应数值“1”。

//BMAP_STATUS_UNKNOWN_LOCATION 位置结果未知。对应数值“2”。

//BMAP_STATUS_UNKNOWN_ROUTE 导航结果未知。对应数值“3”。

//BMAP_STATUS_INVALID_KEY 非法密钥。对应数值“4”。

//BMAP_STATUS_INVALID_REQUEST 非法请求。对应数值“5”。

//BMAP_STATUS_PERMISSION_DENIED 没有权限。对应数值“6”。(自 1.1 新增)

//BMAP_STATUS_SERVICE_UNAVAILABLE 服务不可用。对应数值“7”。(自 1.1 新增)

//BMAP_STATUS_TIMEOUT 超时。对应数值“8”。(自 1.1 新增)

</script>

IP定位获取城市信息就简单了,如下:

<script type="text/javascript">

var map = new BMap.Map("allmap");

var point = new BMap.Point(116.331398,39.897445);

map.centerAndZoom(point,12);

function myFun(result){

var cityName = result.name;

map.setCenter(cityName);   //关于setCenter()可参考API文档---”传送门

alert(cityName);

}

var myCity = new BMap.LocalCity();

myCity.get(myFun);   //创建一个LocalCity对象myCity,然后调用其get()方法,就得到了用户IP对应的城市。该城市结果会以参数形式传递给回调函数myFun。接下来就是myFun(结果城市result)来执行了----即上文红色代码。

</script>

百度地图API的IP定位城市和浏览器定位(转)相关推荐

  1. php调用百度地图定位,php用百度地图API进行IP定位和GPS定位

    /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key ...

  2. android的百度地图sdk获取ip,基于百度地图API的ip地址查询

    说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷. 用的python2.7,编码问题真是坑. 百度mapAPI私钥申请:ht ...

  3. 百度地图api 自定义驾车线路规划 车辆实时定位

    项目需求 根据百度api给出的接口 实现从 始发地→目的地 线路规划 以及 车辆的实时位置跟踪定位 1.首先引入百度API <script type="text/javascript& ...

  4. Android 百度地图API实现实时定位

    首先需要注册百度地图的开发者账号,选择个人开发者就可以.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 然后获取AK这个在网上都有可以自己查看.下载.配置sdk可以 ...

  5. 调用百度地图API获取经纬度(详细步骤)

    前端调用百度地图API获取经纬度(详细操作) 1. 浏览器搜索百度地图开放平台 2. 创建应用 点击控制台 --> 应用管理 --> 我的应用 --> 注册账号(如果没有注册过) - ...

  6. 利用百度地图API进行根据ip定位城市

    根据ip进行定位城市,本次利用的是根据百度地图API进行定位.网上也有其他的方法.本次就将我自己写的东西总结一下: 一.首先获取ip地址 public static String getReqIp(H ...

  7. C# 通过百度地图API,获取访问IP详细地址(上网IP的大致位置信息,一般为城市级别)

    1.创建接受Json格式数据类 namespace BaiduMap {[Serializable]public class IpLocationResult{/// <summary>/ ...

  8. 使用百度地图api搜索两点位置、连线、计算距离、ip定位

    欢迎大家点一个关注,支持我的原创文章,谢谢! 正文 现在在企业做web项目时,偶尔会用到地图功能,而当前最流行的无疑是百度地图了,百度地图API为应用开发者提供了强大的功能,以下就介绍关于本人在做项目 ...

  9. vue 使用百度地图api_使用百度地图api来实现ip高精度定位

    曾有人问:我们的IP地址库是否能够提供这样的结果?可以确定用户在某个网吧.写字楼甚至某个小区?那上面这样的IP数据库是如何产生的呢? 俗称"人海战术".您可别不相信,直到今天,依然 ...

最新文章

  1. Wiki1017(乘积最大)
  2. Linux日常运维管理技巧(三)iptables规则备份和恢复、firewalld的9个zone、任务计划cron、chkconfig系统服务管理、添加服务命令、systemctl管理服务
  3. 超神!卡内基博士ImageNet夺冠后转战NLP!
  4. jQuery源码研究学习笔记(二)
  5. Asp.Net中SqlServer数据库连接方式
  6. (21)tar打包命令详解
  7. 关于Lua的下载以及wlua、luac等文件的解释
  8. 高光谱图像异常探测导读
  9. 全国哀悼日,网站变黑白的代码
  10. 人生十个阶段,每七年周期变化
  11. 在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯( 私有CA)
  12. python 绘制频数与正太分布图
  13. python shell 运行py文件,python怎么运行py文件
  14. 移动磁盘已用空间0字节要如何办啊
  15. STM32F103C8T6移植uCOS基于HAL库
  16. opencv学习八:高斯模糊和边缘保留滤波EPF
  17. RIO——健壮的IO包
  18. warning: LF will be replaced by CRLF in package.json. The file will have its original line endings i
  19. 数字三角形(动态规划经典例题)
  20. 从CSDN博客下载的图片如何无损去水印

热门文章

  1. 如何用python画一束花_武汉早樱开了!却没有赏樱人群,那就用python画一束最美的樱花...
  2. Unity3d 开发(二)Unity 制作可发布插件
  3. 无法加载协定为“ServiceReference1.xxxxxx”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。...
  4. Python实现APP UI自动化以及OpenCV图像识别元素
  5. 关于APP上传到苹果商店的详细步骤
  6. OK彻底解决ping主机ping虚拟机之间ping不通的问题
  7. cdh 安装 agent失败
  8. 获取行政区划地名地址的简称
  9. NAS信令学习笔记 ——IP地址分配
  10. Android 常用开源框架汇总