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

http://blog.csdn.net/suixufeng/article/details/13511761

2013-10-29 17:46 33895人阅读 评论(2) 收藏 举报
 分类:
Sencha Touch开发手记(11)  Extjs+.NET+sqlserver2005(31) 

百度地图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. 百度地图API的IP定位城市和浏览器定位(转)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 利用牛顿法求平方根-Go语言实现
  2. python条件表达式有哪几个_python条件表达式:多项分支,双向分支
  3. python基础(7)-函数命名空间作用域闭包
  4. jvm系列(七):jvm调优-工具篇
  5. Ant Design入门之介绍
  6. ActivityInfo taskAffinity
  7. Centos7 -bash: ifconfig : command not found
  8. Barefoot和Stordis在欧洲领导开源网络
  9. 决战EXCEL2010
  10. 菜鸟译文(二)——使用Java泛型构造模板方法模式
  11. 求两个整数最大公约数
  12. 如何制定个人理财计划_如何根据经济状况做个人投资理财计划?
  13. wmv怎么转换成视频mp4?
  14. C#桌面办公应用-工资管理系统系列二
  15. Win10代理自动打开无法永久关闭的问题排查和如何解决
  16. Ubuntu20.04--开机自动运行脚本(命令)--方法/实例
  17. Python 训练 Day 15
  18. 2016杭州云栖大会回顾网址
  19. python用泰勒级数计算圆周率_Python中利用进度条求圆周率
  20. java数组显示_java数组

热门文章

  1. 前端Jest自动化测试
  2. CCF推荐网络流量分析分类论文汇总Network traffic analysis and classification
  3. FDD LTE B1是什么
  4. Skype不能打开解决记录(win7)
  5. matlab 绘图 模板,【科研绘图】MATLAB可视化代码模板
  6. Cadence Allegro如何复用设计参数?
  7. 【JAVA实现近义词匹配挖取算法】
  8. mysql配置文件中bind_bind配置语法详解 | 羽飞博客
  9. R语言smoothHR包_“统计学诺贝尔奖”授予R语言软件工程师
  10. 使用Github搭建一个属于自己的网站