html5定位获取当前位置并在百度地图上显示


Posted in HTML / CSS onAugust 22, 2014

在开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能。

复制代码
代码如下:

navigator.geolocation.getCurrentPosition(callback);

在获取坐标成功之后会执行回调函数 callback; callback 方法的参数就是获取到的坐标点;然后可以初始化地图,设置控件、中心点、缩放等级,然后给地图添加point的overlay:
复制代码
代码如下:

var map = new BMap.Map("mapDiv");//mapDiv为放地图的 div 的 id
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
map.centerAndZoom(point, 15);//point为坐标点,15为地图缩放级别,最大级别是 18
var pointMarker = new BMap.Marker(point);
map.addOverlay(pointMarker);

然而事实上这样还不够,显示出来的结果并不准,这是因为 getCurrentPosition 获取到的坐标是 GPS 经纬度坐标,而百度地图的坐标是经过特殊转换的,所以,在获取定位坐标和初始化地图之间需要进行一步坐标转换工作,该转换方法百度API里面已经提供了,转换一个点或者批量装换的方法均有提供:单个点转换需引用 http://developer.baidu.com/map/jsdemo/demo/convertor.js,批量转换需引用 http://developer.baidu.com/map/jsdemo/demo/changeMore.js,这里只需要前者即可:
复制代码
代码如下:

BMap.Convertor.translate(gpsPoint, 0, callback);
//gpsPoint:转换前坐标,第二个参数为转换方法,0表示gps坐标转换成百度坐标,callback回调函数,参数为新坐标点

例子的详细代码如下:(引用中的ak是申请的key)
复制代码
代码如下:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
*{
height: 100%; //设置高度,不然会显示不出来
}
</style>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=··············"></script>
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
<script>
$(function(){
navigator.geolocation.getCurrentPosition(translatePoint); //定位
});
function translatePoint(position){
var currentLat = position.coords.latitude;
var currentLon = position.coords.longitude;
var gpsPoint = new BMap.Point(currentLon, currentLat);
BMap.Convertor.translate(gpsPoint, 0, initMap); //转换坐标
}
function initMap(point){
//初始化地图
map = new BMap.Map("map");
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
map.centerAndZoom(point, 15);
map.addOverlay(new BMap.Marker(point))
}
</script>
</head>
<body>
<div id="map"></div>
</body>
</html>

本人开发过程中觉得电脑的定位速度有点慢,经常无法获取坐标导致地图无法显示,建议用手机测试,定位较快。

当然了,如果仅是开发移动端的网页,就不需要使用jQuery,框架太大,可以换用其他轻量级的移动端的 js 框架。

HTML / CSS 相关文章推荐
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
Apr 16 HTML / CSS
CSS3实现淘宝留白的方法
Jun 05 HTML / CSS
Css3实现无缝滚动防抖
Sep 14 HTML / CSS
canvas像素画板的实现代码
Nov 21 HTML / CSS
HTML5安全介绍之内容安全策略(CSP)简介
Jul 10 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
Nov 05 HTML / CSS
使用HTML5在网页中嵌入音频和视频播放的基本方法
Feb 22 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
Mar 10 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
Aug 27 HTML / CSS
canvas绘制树形结构可视图形的实现
Apr 03 HTML / CSS
六个好看实用的 HTML + CSS 后台登录入口页面
Apr 28 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
Aug 22 #HTML / CSS
html5 更新图片颜色示例代码
Jul 29 #HTML / CSS
Html5 语法与规则简要概述
Jul 29 #HTML / CSS
html5桌面通知(Web Notifications)实例解析
Jul 07 #HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 #HTML / CSS
HTML5新增的表单元素和属性实例解析
Jul 07 #HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
Jul 07 #HTML / CSS
You might like
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
php下连接mssql2005的代码
2011/01/17 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php常用数组函数实例小结
2016/12/29 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
简单了解Python write writelines区别
2020/02/27 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
python实现简单的学生管理系统
2021/02/22 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
企业管理标语
2014/06/10 职场文书
助学金感谢信
2015/01/20 职场文书
三峡大坝导游词
2015/01/31 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python