百度地图API的IP定位城市和浏览器定位
百度地图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定位城市和浏览器定位相关推荐
- 百度地图API的IP定位城市和浏览器定位(转)
转自博文:百度地图API的IP定位城市和浏览器定位 http://blog.csdn.net/suixufeng/article/details/13511761 百度地图API提供了Geolocat ...
- php调用百度地图定位,php用百度地图API进行IP定位和GPS定位
/** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key ...
- android的百度地图sdk获取ip,基于百度地图API的ip地址查询
说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷. 用的python2.7,编码问题真是坑. 百度mapAPI私钥申请:ht ...
- 百度地图api 自定义驾车线路规划 车辆实时定位
项目需求 根据百度api给出的接口 实现从 始发地→目的地 线路规划 以及 车辆的实时位置跟踪定位 1.首先引入百度API <script type="text/javascript& ...
- Android 百度地图API实现实时定位
首先需要注册百度地图的开发者账号,选择个人开发者就可以.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com) 然后获取AK这个在网上都有可以自己查看.下载.配置sdk可以 ...
- 调用百度地图API获取经纬度(详细步骤)
前端调用百度地图API获取经纬度(详细操作) 1. 浏览器搜索百度地图开放平台 2. 创建应用 点击控制台 --> 应用管理 --> 我的应用 --> 注册账号(如果没有注册过) - ...
- 利用百度地图API进行根据ip定位城市
根据ip进行定位城市,本次利用的是根据百度地图API进行定位.网上也有其他的方法.本次就将我自己写的东西总结一下: 一.首先获取ip地址 public static String getReqIp(H ...
- C# 通过百度地图API,获取访问IP详细地址(上网IP的大致位置信息,一般为城市级别)
1.创建接受Json格式数据类 namespace BaiduMap {[Serializable]public class IpLocationResult{/// <summary>/ ...
- 使用百度地图api搜索两点位置、连线、计算距离、ip定位
欢迎大家点一个关注,支持我的原创文章,谢谢! 正文 现在在企业做web项目时,偶尔会用到地图功能,而当前最流行的无疑是百度地图了,百度地图API为应用开发者提供了强大的功能,以下就介绍关于本人在做项目 ...
- vue 使用百度地图api_使用百度地图api来实现ip高精度定位
曾有人问:我们的IP地址库是否能够提供这样的结果?可以确定用户在某个网吧.写字楼甚至某个小区?那上面这样的IP数据库是如何产生的呢? 俗称"人海战术".您可别不相信,直到今天,依然 ...
最新文章
- 利用牛顿法求平方根-Go语言实现
- python条件表达式有哪几个_python条件表达式:多项分支,双向分支
- python基础(7)-函数命名空间作用域闭包
- jvm系列(七):jvm调优-工具篇
- Ant Design入门之介绍
- ActivityInfo taskAffinity
- Centos7 -bash: ifconfig : command not found
- Barefoot和Stordis在欧洲领导开源网络
- 决战EXCEL2010
- 菜鸟译文(二)——使用Java泛型构造模板方法模式
- 求两个整数最大公约数
- 如何制定个人理财计划_如何根据经济状况做个人投资理财计划?
- wmv怎么转换成视频mp4?
- C#桌面办公应用-工资管理系统系列二
- Win10代理自动打开无法永久关闭的问题排查和如何解决
- Ubuntu20.04--开机自动运行脚本(命令)--方法/实例
- Python 训练 Day 15
- 2016杭州云栖大会回顾网址
- python用泰勒级数计算圆周率_Python中利用进度条求圆周率
- java数组显示_java数组
热门文章
- 前端Jest自动化测试
- CCF推荐网络流量分析分类论文汇总Network traffic analysis and classification
- FDD LTE B1是什么
- Skype不能打开解决记录(win7)
- matlab 绘图 模板,【科研绘图】MATLAB可视化代码模板
- Cadence Allegro如何复用设计参数?
- 【JAVA实现近义词匹配挖取算法】
- mysql配置文件中bind_bind配置语法详解 | 羽飞博客
- R语言smoothHR包_“统计学诺贝尔奖”授予R语言软件工程师
- 使用Github搭建一个属于自己的网站