h5地理位置API

地理API允许javascript程序向浏览器询问用户的真实地理位置,支持地理位置API的浏览器在访问前总是会询问用户是否允许。

获取用户地理的途径有:

        1、ip地址书上说不准确,很多时候获取的是ISP机房的位置,但是获取非常方便,没有什么限制。但是实际上我觉得在中国,ip地址还是比较准确的,基本上上能精确到小区或大楼的标准。
        2、GPS   非常准确,但是需要在户外,且需要很长时间搜索卫星。最主要的很多设备比如笔记本电脑基本都是不带GPS的,新的智能手机倒是都有。
        3、WiFi基站mac地址。(猜测是连接位置已知的公共WiFi的时候,通过Mac地址识别WiFi接入点,从而定位)这种定位的精度还是很不错的,而且还可以在室内定位。不过由于这种位置公开的wifi比较少,此种方法的适用范围比较少。
        4、 GSM或CDMA基站通过基站定位,精度随基站密度变化,精度一般,还是只有手机能用。看来地理位置API还是手机上比较有实用性。
        5、用户指定位置  这个就不是HTML5的范畴了。
     使用getCurrentPosition获取用户的位置

        if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}else{
alert('该浏览器不支持地理位置!');
} function showPosition(position){
var lat=position.coords.latitude;
var lng=position.coords.longitude;
alert('纬度'+lat+","+"经度"+lng);
}
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;
}
}

支持地理位置的API的浏览器会定义navigator.geolocation。此属性拥有三个方法的对象:

navigator.geolocation.getCurrentPosition()  获取用户当前位置

navigator.geolocation.watchPosition()  获取并不断监视当前位置,一当有更改就会触发指定函数

navigator.geolocation.clearWatch()      停止监听用户位置

上面的代码可以知道,如果用户设备支持地理定位,则运行 getCurrentPosition() 方法。如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象,getCurrentPosition() 方法的第二个参数showError用于处理错误,它规定当获取用户位置失败时运行的函数。其实,除了前两个参数之外getCurrentPosition()还接受第三个参数,该参数为一个配置对象。该对象的属性指定是否需要高精度的位置信息,该位置的过期时间,以及系统在多长范围内获取位置信息。

    

            opts={
2 enableHightAccuracy:false,//获取高精度位置
3 maximumAge:30000, //过期时间
4 timeout:15000 //15s的等待时间
5 }
6 if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(showPosition,showError,opts);
7 }else{
8 alert('该浏览器不支持地理位置!');
9 }
10
11 function showPosition(position){
12 }
13 function showError(error){
14
15 }

接着就是在地图上显示坐标位置(百度地图):

在使用百度地图前,你必须先获取一下秘钥,点击这里

       <!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hello, World</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=vjxRk3m3YYQ4uglexlrOxEVwGc2Nw6kF">
<style type="text/css">
html{height:100%}
body{height:100%;margin:0px;padding:0px}
#container{height:100%}
</style>
</head>
<body>
<div id='container'></div>
<script>
var lat,lng;
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition);
}else{
document.getElementById("container").innerHTML="该浏览器不支持地理位置!";
}
function showPosition(position){
lat=position.coords.latitude;
lng=position.coords.longitude;
alert("纬度"+latlonX+"<br/>经度"+latlonY);
}
var map = new BMap.Map("container"); // 创建地图实例
var point = new BMap.Point(lat,lng); // 创建点坐标
map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
</script>
</body>
</html>

其中,位于BMap命名空间下的Map类表示地图,通过new操作符可以创建一个地图实例。其参数可以是元素id也可以是元素对象(这里是container)。

地图添加到container容器里,所以要确保container容器在页面有宽和高,所以设置了style,如上,ak是你申请的秘钥。

h5地理位置API的更多相关文章

  1. h5新API之WebStorage解决页面数据通信问题

    localStorage相信大家都不陌生,今天我们要讨论的不是怎么存储数据,获取数据.而是看看WebStorage的一些妙用,相信大家在开发中遇到过这样一个场景,一个页面中嵌套一个iframe,ifr ...

  2. H5,API的pushState(),replaceState()和popstate()用法

    pushState和replaceState是H5的API中新添加的两个方法.通过window.history方法来对浏览器历史记录的读写. pushState和replaceState 在 HTML ...

  3. 对飞猪H5端API接口sign签名逆向实验

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  4. H5新增API

    H5新增API 选择器 querySelector()和querySelectorAll(),参数都是css选择器,前者返回符合条件的第一个匹配的元素,如果没有则返回Null,后者返回符合筛选条件的所 ...

  5. 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/duniti ...

  6. 我拖拖拖--H5拖放API基础篇

    不要搞错,本文不是讲如何拖地的.看过<javascript精粹>朋友应该知道,他实现拖放的过程比较复杂,现在时代不同了,我们用H5的新的拖放API就能非常方便的实现拖放效果了.最近在园子见 ...

  7. 地理位置 API

    js获取地理位置的接口navigator.geolocation geolocation对象有三个方法 1.getCurrentPosition 2.watchPosition 3.clearWatc ...

  8. H5地理位置信息、微信摇一摇

    geolocation window.navigator.geolocation 1.getCurrentPosition() // 获取当前的位置信息 2.watchPosition() // 监视 ...

  9. PhoneGap Geolocation结合百度地图api获取地理位置api

    一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然 ...

随机推荐

  1. scala中list集合的操作与总结

    /** * Created by root * Description : List */ object ListTest { def main(args: Array[String]): Unit ...

  2. vi 中大小写转换功能

    所有的操作都是围绕着“gu"和“gU”另个命令展开的.secooler的语法:[开始位置]gu/Gu[结束位置]secooler的翻译: [开始位置] ---- 可以指定开始的位置,默认是光 ...

  3. Ansible 实战:一键安装 LNMP

    Ansible 配置文件 : [root@center /data/ansiblework]# cat ansible.cfg [defaults] remote_user = root remote ...

  4. HTML 样式

    style 属性用于改变 HTML 元素的样式,常见的样式如下: 定义字体颜色:style="color:red"定义字体大小:style="font-size:20px ...

  5. [Ubuntu] 如何设置静态 IP 和 DNS

    编辑 /etc/network/interfaces 来设置 IP 和 DNS 解析服务器: # interfaces() ) and ifdown() auto lo iface lo inet l ...

  6. UISegmentedControl的基本用法

    本文转载至 http://www.tuicool.com/articles/yUfURj 原文  http://blog.csdn.net/hmt20130412/article/details/38 ...

  7. thinkphp 控制器unset删除对象变量失败。。

    今儿开发过程中发现 tp是unset 变量失败..具体代码 foreach( $this->menu as $k => $v){ if(0 == $v['flag']) unset($th ...

  8. Malab 常用数学函数

    l        三角函数和双曲函数 名称 含义 名称 含义 名称 含义 sin 正弦 csc 余割 atanh 反双曲正切 cos 余弦 asec 反正割 acoth 反双曲余切 tan 正切 ac ...

  9. 【云迁移论文笔记】Cloud Migration Research:A Systematic Review

    Cloud Migration Research:A Systematic Review Author Info: Pooyan Jamshidi PhD Postdoctoral Researche ...

  10. Esper学习之十:EPL语法(六)

    在esper的文档中,epl访问数据库的配置放在了比较靠后的位置,不过为了方便各位学习,这里会先说明和数据库交互的相关配置,然后再说epl怎么访问数据库. 配置文件在官方esper包的etc文件夹下, ...