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 相关文章推荐
css3设置box-pack和box-align让div里面的元素垂直居中
Sep 01 HTML / CSS
利用SVG和CSS3来实现一个炫酷的边框动画
Jul 22 HTML / CSS
CSS3效果:自定义“W”形运行轨迹实例
Mar 29 HTML / CSS
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
Aug 24 HTML / CSS
html5中地理位置定位api接口开发应用小结
Jan 04 HTML / CSS
html5 offlline 缓存使用示例
Jun 24 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
Jul 15 HTML / CSS
简单介绍HTML5中的文件导入
May 08 HTML / CSS
如何避免常见的6种HTML5错误用法
Nov 06 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
Jul 16 HTML / CSS
html中相对位置与绝对位置的具体使用
May 15 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
什么是短波收听SWL
2021/03/01 无线电
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
Vue实现验证码功能
2019/12/03 Javascript
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python调用支付宝支付接口流程
2019/08/15 Python
python装饰器的特性原理详解
2019/12/25 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
创联软件面试题笔试题
2012/10/07 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
中学生班主任评语
2014/01/30 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS