h5地理位置API
h5地理位置API
地理API允许javascript程序向浏览器询问用户的真实地理位置,支持地理位置API的浏览器在访问前总是会询问用户是否允许。
获取用户地理的途径有:
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的更多相关文章
- h5新API之WebStorage解决页面数据通信问题
localStorage相信大家都不陌生,今天我们要讨论的不是怎么存储数据,获取数据.而是看看WebStorage的一些妙用,相信大家在开发中遇到过这样一个场景,一个页面中嵌套一个iframe,ifr ...
- H5,API的pushState(),replaceState()和popstate()用法
pushState和replaceState是H5的API中新添加的两个方法.通过window.history方法来对浏览器历史记录的读写. pushState和replaceState 在 HTML ...
- 对飞猪H5端API接口sign签名逆向实验
免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...
- H5新增API
H5新增API 选择器 querySelector()和querySelectorAll(),参数都是css选择器,前者返回符合条件的第一个匹配的元素,如果没有则返回Null,后者返回符合筛选条件的所 ...
- 07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 源码:https://github.com/duniti ...
- 我拖拖拖--H5拖放API基础篇
不要搞错,本文不是讲如何拖地的.看过<javascript精粹>朋友应该知道,他实现拖放的过程比较复杂,现在时代不同了,我们用H5的新的拖放API就能非常方便的实现拖放效果了.最近在园子见 ...
- 地理位置 API
js获取地理位置的接口navigator.geolocation geolocation对象有三个方法 1.getCurrentPosition 2.watchPosition 3.clearWatc ...
- H5地理位置信息、微信摇一摇
geolocation window.navigator.geolocation 1.getCurrentPosition() // 获取当前的位置信息 2.watchPosition() // 监视 ...
- PhoneGap Geolocation结合百度地图api获取地理位置api
一.使用百度地图API 1.地址:http://developer.baidu.com/map/ 2.在js DEMO中获取反地址解析的DEMO 3.修改这个DEMO的密钥,去创建应用就能创建密钥,然 ...
随机推荐
- 【RF库Collections测试】List Should Not Contain Duplicates
Name:List Should Not Contain DuplicatesSource:Collections <test library>Arguments:[ list_ | ms ...
- [JS] console.time() - 计时器构造函数及如何计时
概述 使用计时器可以对代码运行过程进行测速.你可以给每个计时器取一个名字,每个页面上最多可以运行一万个计时器.当你使用计时器名字调用 console.timeEnd() 函数时,浏览器会返回一个毫秒值 ...
- Couldn’t load locSDK3
在项目的libs目录下新建一个文件夹,命名为armeabi-v7a,然后将liblocSDK3.so复制一份到该文件夹 ok
- linux clamav杀毒软件的安装
一.概述 Linux比其它操作系统更稳定更安全.理论上Linux是有可能被病毒侵害的.但实际上 Linux机器几乎不可能遭受病毒的攻击.所以我这里的问题是为什么要为Linux准备防病毒软件,为了更好理 ...
- 冥想_ PHP抽奖程序概率算法
//概率算法,6个奖项 $prize_arr = array( '0' => array('id'=>1,'prize'=>'iphone6','v'=>1), '1' =&g ...
- Android学习之Dialog
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框; 实例如下: 1.效果图: 2.XML代码: ...
- jQuery给动态添加生成的元素绑定事件的方法
<div id="testdiv"> <ul></ul> </div> 需要给<ul>里面动态添加的<li&g ...
- php文件的处理和操作
好长时间没有看php手册了,有些关于文件操作方面的知识点发现从没有学过,现补习一下,顺便整理一下: 1.文件的打开:fopen() 此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪 ...
- Android设计和开发系列第一篇:Notifications通知(Design)
Design篇 Notifications The notification system allows users to keep informed about relevant and timel ...
- try except与try finally不同之处
try except与try finally不同之处 try//尝试执行 {SomeCode} except//出错的时候执行, Except有特定的错误类型 {SomeCode} end; t ...