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过渡_动力节点Java学院整理
Jul 11 HTML / CSS
CSS3 background-image颜色渐变的实现代码
Sep 13 HTML / CSS
CSS3 制作旋转的大风车(充满童年回忆)
Jan 30 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
Feb 07 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
Oct 18 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
Sep 03 HTML / CSS
html5实现的便签特效(实战分享)
Nov 29 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
May 08 HTML / CSS
H5混合开发app如何升级的方法
Jan 10 HTML / CSS
详解px单位html5响应式方案
Mar 08 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 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
用cookies来跟踪识别用户
2006/10/09 PHP
为查询结果建立向后/向前按钮
2006/10/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
javascript this详细介绍
2016/09/19 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
Final类有什么特点
2012/04/25 面试题
检察官就职演讲稿
2014/01/13 职场文书
试用期员工考核制度
2014/01/22 职场文书
机关道德讲堂实施方案
2014/03/15 职场文书
大型演出策划方案
2014/05/28 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
社区重阳节活动总结
2015/03/24 职场文书
地心历险记观后感
2015/06/15 职场文书
读书笔记怎么写
2015/07/01 职场文书