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. 淘宝姐姐不要过滤掉js我们还是好朋友
  2. Python中的shape和reshape()
  3. nginx重新加载php,如何使用nginx启动、停止和重新加载
  4. boost::log::sinks::debug_output_backend用法的测试程序
  5. C语言函数参数既做出参又做入参的代表
  6. HDU 5439 Aggregated Counting
  7. 3.0 C++远征:is a
  8. 《OD学spark》20161022
  9. 炼丹手册——数据增广
  10. 半平面交总结and模板
  11. android rxbus工具类,RxBus的工具类
  12. 团队协作之 Git 提交
  13. A Beginner‘s Guide To Understanding Convolutional Neural Networks(part 1)
  14. 基于支持向量机的量化选股模型
  15. 使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误
  16. 网关短信 群发 为什么卡发短信 群发 贵 ?
  17. oracle查看历史oracle database数据库版本并下载
  18. sp_server_diagnostics
  19. 《Deep Learning for Computer Vision withPython》阅读笔记-StarterBundle(第4 - 5章)
  20. PET(聚对苯二甲酸乙二醇酯)——百度百科

热门文章

  1. 理论基础 —— 线性表
  2. 基础算法 —— 高精度计算
  3. 单片机led闪烁代码_单片机、555实现LED闪烁电路
  4. [ ERROR ] Can not init Myriad device: NC_ERROR
  5. 【Swin Transformer】W-MSA与MSA时间复杂度的理解
  6. np.stack()函数详解 ==>堆叠 【类似于torch.stack()】
  7. 电商项目实战项目需求以及技术选型
  8. [流体输配管网]古罗马渡槽从水源到城市的落差估计
  9. Linux查看:crontab开启状态
  10. js点击复制文本 - 案例篇