HTML5提供了地理位置定位功能(Geolocation API),能确定用户位置,我们可以借助HTML5的该特性开发基于地理位置信息的应用。本文结合实例给大家分享如何使用HTML5,借助百度、谷歌地图接口来获取用户准确的地理位置信息。

查看演示 下载源码

如何使用HTML5地理位置定位功能

定 位功能(Geolocation)是HTML5的新特性,因此只有在支持HTML5的现代浏览器上运行,特别是手持设备如iphone,地理定位 更加精确。首先我们要检测用户设备浏览器是否支持地理定位,如果支持则获取地理信息。注意这个特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是 不可用的,所以我们在访问该应用时会提示是否允许地理定位,我们当然选择允许即可。

function getLocation(){ if (navigator.geolocation){ navigator.geolocation.getCurrentPosition(showPosition,showError); }else{ alert("浏览器不支持地理定位。"); }
}

上面的代码可以知道,如果用户设备支持地理定位,则运行 getCurrentPosition() 方法。如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对 象,getCurrentPosition() 方法的第二个参数showError用于处理错误,它规定当获取用户位置失败时运行的函数。

我们先来看函数showError(),它规定获取用户地理位置失败时的一些错误代码处理方式:

function showError(error){ switch(error.code) { case error.PERMISSION_DENIED: alert("定位失败,用户拒绝请求地理定位"); break; case error.POSITION_UNAVAILABLE: alert("定位失败,位置信息是不可用"); break; case error.TIMEOUT: alert("定位失败,请求获取用户位置超时"); break; case error.UNKNOWN_ERROR: alert("定位失败,定位系统失效"); break; }
}

我们再来看函数showPosition(),调用coords的latitude和longitude即可获取到用户的纬度和经度。

function showPosition(position){ var lat = position.coords.latitude; //纬度 var lag = position.coords.longitude; //经度 alert('纬度:'+lat+',经度:'+lag);
}

利用百度地图和谷歌地图接口获取用户地址

上面我们了解了HTML5的Geolocation可以获取用户的经纬 度,那么我们要做的是需要把抽象的经纬度转成可读的有意义的真正的用户地理位 置信息。幸运的是百度地图和谷歌地图等提供了这方面的接口,我们只需要将HTML5获取到的经纬度信息传给地图接口,则会返回用户所在的地理位置,包括省 市区信息,甚至有街道、门牌号等详细的地理位置信息。

我们首先在页面定义要展示地理位置的div,分别定义id#baidu_geo和 id#google_geo。我们只需修改关键函数 showPosition()。先来看百度地图接口交互,我们将经纬度信息通过Ajax方式发送给百度地图接口,接口会返回相应的省市区街道信息。百度地 图接口返回的是一串JSON数据,我们可以根据需求将需要的信息展示给div#baidu_geo。注意这里用到了jQuery库,需要先加载 jQuery库文件。

function showPosition(position){ var latlon = position.coords.latitude+','+position.coords.longitude; //baidu var url = "http://api.map.baidu.com/geocoder/v2/?ak=C93b5178d7a8ebdb830b9b557abce78b&callback=renderReverse&location="+latlon+"&output=json&pois=0"; $.ajax({  type: "GET",  dataType: "jsonp",  url: url, beforeSend: function(){ $("#baidu_geo").html('正在定位...'); }, success: function (json) {  if(json.status==0){ $("#baidu_geo").html(json.result.formatted_address); } }, error: function (XMLHttpRequest, textStatus, errorThrown) {  $("#baidu_geo").html(latlon+"地址位置获取失败");  } });
});

再来看谷歌地图接口交互。同样我们将经纬度信息通过Ajax方式发送给谷歌地图接口,接口会返回相应的省市区街道详细信息。谷歌 地图接口返回的也是一串 JSON数据,这些JSON数据比百度地图接口返回的要更详细,我们可以根据需求将需要的信息展示给div#google_geo。

function showPosition(position){ var latlon = position.coords.latitude+','+position.coords.longitude; //google var url = 'http://maps.google.cn/maps/api/geocode/json?latlng='+latlon+'&language=CN'; $.ajax({  type: "GET", url: url,  beforeSend: function(){ $("#google_geo").html('正在定位...'); }, success: function (json) {  if(json.status=='OK'){ var results = json.results; $.each(results,function(index,array){ if(index==0){ $("#google_geo").html(array['formatted_address']); } }); } }, error: function (XMLHttpRequest, textStatus, errorThrown) {  $("#google_geo").html(latlon+"地址位置获取失败");  }  });
}

以上的代码分别将百度地图接口和谷歌地图接口整合到函数showPosition()中,我们可以根据实际情况进行调用。当然这只是一个简单的应用,我们可以根据这个简单的示例开发出很多复杂的应用,建议用手机浏览器访问DEMO演示。

转自:http://www.helloweba.com/view-blog-300.html

附件下载:html5geo

HTML5获取地理位置定位信息相关推荐

  1. 获取地理位置定位信息-app端

    获取地理位置定位信息-app端 getLoad() {let site = {}let onSuccess = (position) => {site.code = 0//获取经纬度site.p ...

  2. html选择定位位置,html5的地理位置定位

    html5提供的地理位置定位使开发人员不用借助其他软件就能轻松实现位置查找,地图应用,导航等功能. 地理位置定位基本原理 GPS, WIFI, IP, 手机信号基站 核心对象 Geolocation是 ...

  3. html5获取地理位置信息API

    html5获取地理位置信息API 在HTML5中,可以看下如何使用Geolocation API来获得用户的地理位置信息,如果该浏览器支持的话,且设备具有定位功能,就能够直接使用这组API来获取当前位 ...

  4. 【前端用法】html5实现地理位置定位(JS获取当前地理位置的方法)

    本文目录 一.背景描述 二.实现方案 方案一 方案二 一.背景描述 目前在做公司的一个网站,有个需求是:当别人进入网站时自动定位他的地理位置,包括市区,方便给他推荐当前城市的特色信息. 其实,这也是一 ...

  5. 微信上的网站 用HTML5获取地理位置

    今天折腾了一天,因为项目的需要,需要在微信网站上得到当前的地理位置.采用的是HTML5开发,但是实验了很多种方法,都不行.HTML5获取地理位置信息,是通过ip获取,ip的位置和你本人的位置差距还是很 ...

  6. html5网站抓取,微信上的网站 用HTML5获取地理位置

    今天折腾了一天,因为项目的需要,需要在微信网站上得到当前的地理位置.采用的是HTML5开发,但是实验了很多种方法,都不行.HTML5获取地理位置信息,是通过ip获取,ip的位置和你本人的位置差距还是很 ...

  7. html5获取gps坐标,html5获取手机GPS信息的示例代码

    html5获取手机GPS信息的示例代码function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCu ...

  8. IOS swift开发——获取设备定位信息

    作为GIS开发人员,学习任何Android或者swift开发语言,可能第一时间想到的就是获取设备的定位信息.这里就来简述一下,我使用swift获取IOS定位信息的过程. 目录 添加后台定位能力 模拟器 ...

  9. ESP8266通过WIFI获取IP定位信息

    ESP8266通过WIFI获取IP定位信息 Arduino使用ESP8266联网获取外网IP地址并上报 Arduino使用ESP8266联网获取外网IP地址并上报 #include <Ardui ...

最新文章

  1. 10个小动作帮你简化生活
  2. AlphaGo、人工智能、深度学习解读以及应用
  3. [攻防世界 pwn]——Mary_Morton
  4. linux gcc编译C程序 分享
  5. 如何解决MySQL导入大数据出现的问题
  6. 结合使用 Oracle Coherence 和 Spring Batch 进行高性能数据处理
  7. 用联发科芯片的手机能升级鸿蒙吗,华为鸿蒙系统降临!首批升级手机确定,联发科芯片被放弃?...
  8. 7z源码的编译与使用_markdown 格式
  9. c51单片机模块化编程
  10. unity3D中导出webgl并使用js进行交互
  11. 阶段1 - 03. 常用API第一部分 - 04. ArrayList集合
  12. Using GCC to produce readable assembly? - Stack Overflow
  13. 360 私有云平台 MySQL 自动化实现剖析
  14. GitHub学习总结
  15. 服务器上搭建git仓库
  16. YTU 3795 GCD 和 LCM
  17. 非师范生教师资格证最新政策
  18. 云南省二级c计算机考试试题,2014云南省计算机等级考试试题 二级C试题最新考试试题库(完整版)...
  19. Python:RuntimeWarning: invalid value encountered in true_divide解决方案
  20. 币圈最全java入门教程+实战项目!

热门文章

  1. 机器人搬重物(洛谷-P1126)
  2. 计算(信息学奥赛一本通-T1356)
  3. 信息学奥赛一本通C++语言——1021: 打印字符
  4. 67 SD配置-交货凭证配置-分配 SD 查找过程/激活检查
  5. 46 SD配置-销售凭证设置-分配状态参数文件到项目类型
  6. 47 FI配置-财务会计-固定资产-一般评估-定义资产分类中的折旧范围
  7. 17 合作伙伴角色‘OA’不允许用于科目组xxxx的供应商
  8. 9.1 LSMW程序创建操作手册 第1 2步
  9. 如何清除html代码里的空格,如何从html源代码中删除空格
  10. php删除文件代码指定,PHP删除指定文件夹所有文件代码