使用HTML5实现地理位置定位

HTML5 Geolocation(地理定位)用于定位用户的位置。

定位用户的位置
HTML5 Geolocation API 用于获得用户的地理位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。
浏览器支持
Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera 支持地理定位。
注释:对于拥有 GPS 的设备,比如 iPhone,地理定位更加精确。

使用地理定位简单例子
请使用 getCurrentPosition() 方法来获得用户的位置。
下例是一个简单的地理定位实例,可返回用户位置的经度和纬度。
实例
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " position.coords.latitude
"<br />Longitude: " position.coords.longitude;
}
</script>

例子解释:
1.检测是否支持地理定位
2.如果支持,则运行 getCurrentPosition() 方法。如果不支持,则向用户显示一段消息。
3.如果getCurrentPosition()运行成功,则向参数showPosition中规定的函数返回一个coordinates对象
showPosition() 函数获得并显示经度和纬度

上面的例子是一个非常基础的地理定位脚本,不含错误处理。

含处理错误和拒绝的例子
getCurrentPosition() 方法的第二个参数用于处理错误。它规定当获取用户位置失败时运行的函数:
实例
function showError(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}

错误代码解释:
Permission denied - 用户不允许地理定位
Position unavailable - 无法获取当前位置
Timeout - 操作超时

在地图中显示结果
如需在地图中显示结果,您需要访问可使用经纬度的地图服务,比如谷歌地图或百度地图:
要点
function showPosition(position)
{
var latlon=position.coords.latitude "," position.coords.longitude;

var img_url="http://maps.googleapis.com/maps/api/staticmap?center="
latlon "&zoom=14&size=400x300&sensor=false";

document.getElementById("mapholder").innerHTML="<img src='" img_url "' />";
}
完整例子
<!DOCTYPE html>
<html>
<body>
<p id="demo">点击这个按钮,获得您的位置:</p>
<button οnclick="getLocation()">试一下</button>
<div id="mapholder"></div>
<script>
var x=document.getElementById("demo");
function getLocation() //获取地理位置
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition,showError);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}

function showPosition(position) //显示地理位置
{
var latlon=position.coords.latitude "," position.coords.longitude;

var img_url="http://maps.googleapis.com/maps/api/staticmap?center="
latlon "&zoom=14&size=400x300&sensor=false";
document.getElementById("mapholder").innerHTML="<img src='" img_url "' />";
}

function showError(error) //错误处理
{
switch(error.code) 
{
case error.PERMISSION_DENIED:
x.innerHTML="User denied the request for Geolocation."
break;
case error.POSITION_UNAVAILABLE:
x.innerHTML="Location information is unavailable."
break;
case error.TIMEOUT:
x.innerHTML="The request to get user location timed out."
break;
case error.UNKNOWN_ERROR:
x.innerHTML="An unknown error occurred."
break;
}
}
</script>
</body>
</html>


getCurrentPosition() 方法及其它属性 
若成功,则 getCurrentPosition() 方法返回对象。始终会返回 latitude、longitude 以及 accuracy 属性。如果可用,则会返回其他下面的属性。

coords.latitude 十进制数的纬度
coords.longitude 十进制数的经度
coords.accuracy 位置精度
coords.altitude 海拔,海平面以上以米计
coords.altitudeAccuracy 位置的海拔精度
coords.heading 方向,从正北开始以度计
coords.speed 速度,以米/每秒计
timestamp 响应的日期/时间

Geolocation 对象 - 其他有趣的方法
watchPosition() - 返回用户的当前位置,并继续返回用户移动时的更新位置(就像汽车上的 GPS)。
clearWatch() - 停止 watchPosition() 方法
下面的例子展示 watchPosition() 方法。您需要一台精确的 GPS 设备来测试该例(比如 iPhone):
<!DOCTYPE html>
<html>
<body>
<p id="demo">点击这个按钮,获得您的坐标:</p>
<button οnclick="getLocation()">试一下</button>
<script>
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{x.innerHTML="Geolocation is not supported by this browser.";}
}
function showPosition(position)
{
x.innerHTML="Latitude: " position.coords.latitude  
"<br />Longitude: " position.coords.longitude;
}
</script>
</body>
</html>


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暑假第五周计划

在上一周根据视频在电脑上安装了一个伪Hadoop&#xff0c;只有一个虚拟机&#xff0c;并且配置好了环境变量&#xff0c;可以在命令行运行程序自带的一些例子&#xff0c;比如计算圆周率&#xff0c;统计文本文件的字符数 遇到的问题主要就是对linux的操作命令不熟悉&#xff0…

Java EE CDI依赖关系消歧示例

在本教程中&#xff0c;我们将向您展示如何避免CDI bean中的依赖关系消除歧义。 在CDI中&#xff0c;我们可以为应用程序中不同客户端的接口的多个实现实现依赖项注入。 依赖关系消除歧义的问题是客户端如何在不同的实现中调用特定的实现&#xff0c;而不会发生任何错误。 为了…

linux java 安装配置_类Linux环境安装jdk1.8及环境变量配置详解

配置很简单&#xff0c;但是每次都要查一下&#xff0c;索性就记录下1. 安装前准备1.1 创建安装目录&#xff0c;习惯上通常安装在/usr/local/jdk8目录下mkdir /usr/local/jdk81.2 查看是否安装过jdk&#xff0c;安装前要把之前的删除干净# 通过jdk环境变量查看echo $JAVA_HOME…

Mac版Anaconda安装R语言iGraph包

Anaconda官网给出的R语言Igraph包安装方法&#xff1a;https://anaconda.org/r/r-igraph 查阅Anaconda官方文档&#xff0c;可以通过以下控制台命令安装R语言Igraph包。 conda install -c r r-igraph 在控制台执行后&#xff0c;系统可能会提示未找到conda指令&#xff0c; 所以…

Html5中Canvas(画布)的使用

什么是 Canvas&#xff1f;HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域&#xff0c;您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。创建 Canvas 元素向 HTML5 页面添加 canvas 元素。规定元素的 id、宽…

20180813-20180817

这周没怎么学...&#xff08;哼没学还这么理直气壮&#xff01;&#xff09; 上周公司项目更新了一个版本 里面不小心用了es6的代码 然后好多低版本的手机就跑不起来了 这还是上线了半天之后才发现的 在这说一下 ios10.3以前的版本不支持es6 Android6.0以下不支持es6 最近一直…

多个动态包含一个JSF标签

每个JSF开发人员都知道ui&#xff1a;include和ui&#xff1a;param标签。 您可以包括一个facelet&#xff08;XHTML文件&#xff09;并传递一个对象&#xff0c;该对象将在包含的facelet中可用&#xff0c;如下所示&#xff1a; <ui:include src"/sections/columns.x…

java map遍历最快_Java Map遍历速度最优解

第一种:Map map new HashMap();Iterator iter map.entrySet().iterator();while (iter.hasNext()) {Map.Entry entry (Map.Entry) iter.next(); Object key entry.getKey();Object val entry.getValue();}效率高,以后一定要使用此种方式!第二种:Map map new HashMap();It…

[JLOI2014]松鼠的新家

嘟嘟嘟 这还是一道树链剖分板子题呀&#xff01; 从1到n - 1枚举a[i]&#xff0c;每一次使节点a[i]到a[i 1]的路径加1&#xff0c;但这样的话除a[1]&#xff0c;每一个点都多加了一个1&#xff0c;所以输出答案的时候减1即可。 1 #include<cstdio>2 #include<iostrea…

Html5中的Video元素使用方法

现在互联网视频大都使用Flash来实现。但是不同的浏览器可能使用不同的插件。在HTML5中则提供了一个统一的方式来展示视频内容。HTML5 video在Internet Explorer 9, Firefox, Opera, Chrome, 和Safari都支持。IE8及其更早的浏览器不支持。 代码如下 <SPAN style"COLOR:…

CSS3-背景(background-image、background-size、background-origin、background-clip)

CSS3中新的背景属性&#xff1a;background-image、background-size、background-origin、background-clip 背景图片&#xff1a;background-image CSS3中可以通过background-image属性添加背景图片。 不同的背景图像和图像用逗号隔开&#xff0c;所有的图片中显示在最顶端的为…

使用String.intern()减少内存使用

时不时地会有一个垂死的生产应用程序。 而且您知道您需要尽快对其进行修补。 我们也一样&#xff0c;并认为分享最近的一个战争故事将很有趣。 在这种情况下&#xff0c;我们就有机会使用String.intern&#xff08;&#xff09;之类的简单补丁来修补应用程序。 但是&#xff0c…

CSS实现比翼双飞和圣杯布局模型效果

圣杯模型和比翼双飞模型主要的特指1.首先加载的是中间部分&#xff0c;其次是左边&#xff0c;然后是右边 2.中间是自适应&#xff0c;二边是定宽 实现方法1.grid2.margin float position:releative父亲加padding 挤进去3.margin float box-size:border-box 1.gridhtml:&l…

java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...

文件上传方法&#xff0c;使用Struts2&#xff0c;实现Excel文件读取并写入数据库技术如题&#xff1a;文件信息的批量导入……项目中经常会遇到客户的一些单表信息的数据批量导入&#xff0c;也就是提供定制Excel表&#xff0c;再把Excel表中的数据提取到数据库的操作&#xf…

jmeter创建高级测试计划

如果应用程序使用重写地址而不是使用cookie存储信息&#xff0c;需要做一些额外的工作去测试程序 为了正确的响应重写地址&#xff0c;jmeter 需要解析 从服务器获取html 并且检索会话ID, 1 合理利用pre-processors-http url rewriting modifier 来完成&#xff0c;简单的输入s…

从这开始

今天正式加入博客园&#xff01; 今后跟大家分享有关IoT软件方面的知识&#xff0c;包括WIFI 、蓝牙、Zigbee、 Sub-1G 、NB-IoT、GPRS/GPS和单片机等。 有疑问欢迎留言联系&#xff01;转载于:https://www.cnblogs.com/crepse/p/9502342.html

单元测试技巧:创建描述性测试

您的单元测试应尽可能具有描述性。 他们给您的反馈应该非常清楚&#xff0c;您甚至不需要启动调试器并一步一步地检查代码来检查局部变量。 为什么&#xff1f; 因为那需要时间&#xff0c;而且我们很懒&#xff0c;对吗&#xff1f; 为此&#xff0c;您需要创建描述性测试。 有…

Div前台显示自动换行和不自动换行的问题

1、无法自动换行* 问题&#xff1a;如果 div 输入的是英文字母且没有空格&#xff0c;会导致英文字母不换行直接在同一行输出&#xff0c;导致 div 的宽度远远超出设定的大小。* 原因&#xff1a;因为在 div 中&#xff0c;英文字母之间没有空格的话&#xff0c;默认为一个英文…

java 自定义taglib_java – 非常简单的自定义taglib函数无法正常工作

我正在敲打为什么我的自定义taglib功能不起作用.该示例使用Math.cos和Math.sin.这是班级&#xff1a;package foo.tags;public class Math {public java.lang.Double cos(java.lang.Double value) {return java.lang.Math.cos(value);}public java.lang.Double sin(java.lang.D…

python基础知识(二)if语句

if语句是条件判断语句 格式为&#xff1a; if 条件:执行语句 elif 再一个条件:执行语句 else:执行语句注意&#xff1a; if 与elif后不要忘记冒号 例子&#xff1a; #Autor:Decade value156 value2int(input(number:)) #提示用户输入一个整数型的数字 if value1>value2: …