利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位


Posted in HTML / CSS onJanuary 23, 2013

本小菜刚开始学习HTML5,现在对其中的Geolocation颇感兴趣,结合Google Map的API实现基本的地图定位功能。
1.获取当前地理位置
调用方法 void getCurrentPosition(onSuccess, onError, options);即可。
其中onSuccess是获取当前位置信息成功时执行的回调函数,onError是获取当前位置信息失败时所执行的回调函数,options是一些可选熟悉列表。其中第二和第三个参数为可选属性。
在onSuccess回调函数中,用到了参数position,代表一个具体的position对象,表示当前位置。其具有如下属性:
•latitude:当前地理位置的纬度。
•longitude:当前地理位置的经度。
•altitude:当前位置的海拔高度(不能获取时为null)。
•accuracy:获取到的纬度和经度的精度(以米为单位)。
•altitudeAccurancy:获取到的海拔高度的经度(以米为单位)。
•heading:设备的前进方向。用面朝正被方向的顺时针旋转角度来表示(不能获取时为null)。
•speed:设备的前进速度(以米/秒为单位,不能获取时为null)。
•timestamp:获取地理位置信息时的时间。

在onError回调函数中,用到了error参数。其具有如下属性:
•code:错误代码,有如下值。
1.用户拒绝了位置服务(属性值为1);
2.获取不到位置信息(属性值为2);
3.获取信息超时错误(属性值为3)。
•message:字符串,包含了具体的错误信息。

在options参数中,可选属性如下:
•enableHighAccuracy:是否要求高精度的地理位置信息。
•timeout:设置超时时间(单位为毫秒)。
•maximumAge:对地理位置信息进行缓存的有效时间(单位为毫秒)。
其中注意要写上如下代码,判断浏览器是否支持HTML5获取地理位置信息,以兼容较早不支持的浏览器。

复制代码
代码如下:

if (navigator.geolocation) {
//获取当前地理位置信息
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
} else {
alert("你的浏览器不支持HTML5来获取地理位置信息。");
}

2.调用Google Map API获取当前位置信息
首先,需要在页面中引用Google Map API的脚本文件,导入方法如下所示。
复制代码
代码如下:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

其次,设定地图参数,设定方法如下所示。
复制代码
代码如下:

//指定一个google地图上的坐标点,同时指定该坐标点的横坐标和纵坐标
var latlng = new google.maps.LatLng(coords.latitude, coords.longitude);
var myOptions = {
zoom: 14, //设定放大倍数
center: latlng, //将地图中心点设定为指定的坐标点
mapTypeId: google.maps.MapTypeId.ROADMAP //指定地图类型
};

最后,创建地图,并在页面中显示,创建方法如下所示
复制代码
代码如下:

//创建地图,并在页面map中显示
var map = new google.maps.Map(document.getElementById("map"), myOptions);

最后的最后,献上本次示例所有代码。代码如下所示。
复制代码
代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取当前位置并显示在google地图上</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function init() {
if (navigator.geolocation) {
//获取当前地理位置
navigator.geolocation.getCurrentPosition(function (position) {
var coords = position.coords;
//console.log(position);
//指定一个google地图上的坐标点,同时指定该坐标点的横坐标和纵坐标
var latlng = new google.maps.LatLng(coords.latitude, coords.longitude);
var myOptions = {
zoom: 14, //设定放大倍数
center: latlng, //将地图中心点设定为指定的坐标点
mapTypeId: google.maps.MapTypeId.ROADMAP //指定地图类型
};
//创建地图,并在页面map中显示
var map = new google.maps.Map(document.getElementById("map"), myOptions);
//在地图上创建标记
var marker = new google.maps.Marker({
position: latlng, //将前面设定的坐标标注出来
map: map //将该标注设置在刚才创建的map中
});
//标注提示窗口
var infoWindow = new google.maps.InfoWindow({
content: "当前位置:<br/>经度:" + latlng.lat() + "<br/>维度:" + latlng.lng() //提示窗体内的提示信息
});
//打开提示窗口
infoWindow.open(map, marker);
},
function (error) {
//处理错误
switch (error.code) {
case 1:
alert("位置服务被拒绝。");
break;
case 2:
alert("暂时获取不到位置信息。");
break;
case 3:
alert("获取信息超时。");
break;
default:
alert("未知错误。");
break;
}
});
} else {
alert("你的浏览器不支持HTML5来获取地理位置信息。");
}
}
</script>
</head>
<body onload="init()">
<div id="map" style="width: 800px; height: 600px"></div>
</body>
</html>
HTML / CSS 相关文章推荐
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 HTML / CSS
CSS3中的clip-path使用攻略
Aug 03 HTML / CSS
CSS3哪些新特性值得称赞
Mar 02 HTML / CSS
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
Apr 26 HTML / CSS
html5+css3实现一款注册表单实例
Apr 17 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
Oct 14 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
Apr 02 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
Apr 23 HTML / CSS
实例讲解HTML5的meta标签的一些应用
Dec 08 HTML / CSS
h5移动端调用支付宝、微信支付的实现
Jun 08 HTML / CSS
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
May 10 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
Feb 15 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(三)
Jan 21 #HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
Jan 21 #HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(一)
Jan 21 #HTML / CSS
HTML5中Canvas与SVG的画图原理比较
Jan 16 #HTML / CSS
html5 svg 中元素点击事件添加方法
Jan 16 #HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
Jan 09 #HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
Jan 09 #HTML / CSS
You might like
详解yii2使用多个数据库的案例
2017/06/16 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
Python的条件锁与事件共享详解
2019/09/12 Python
python实现画出e指数函数的图像
2019/11/21 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
python图片合成的示例
2020/11/09 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
企业安全生产责任书
2014/04/14 职场文书
教师个人师德总结
2015/02/06 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python