html5定位并在百度地图上显示的示例


Posted in HTML / CSS onApril 27, 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-shadow使用指南
Dec 09 HTML / CSS
纯css3制作网站后台管理面板
Dec 30 HTML / CSS
纯css3实现图片翻牌特效
Mar 10 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
May 26 HTML / CSS
html5视频播放_动力节点Java学院整理
Jul 13 HTML / CSS
HTML5视频支持检测(检查浏览器是否支持视频播放)
Jun 08 HTML / CSS
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
May 08 HTML / CSS
浅析border-radius如何兼容IE
Apr 19 HTML / CSS
HTML最新标准HTML5总结(必看)
Jun 13 HTML / CSS
HTML5+css3:3D旋转木马效果相册
Jan 03 HTML / CSS
HTML5 表单验证失败的提示语问题
Jul 13 HTML / CSS
详解CSS不受控制的position fixed
May 25 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
Apr 23 #HTML / CSS
HTML5的download属性详细介绍和使用实例
Apr 23 #HTML / CSS
HTML5里的placeholder属性使用实例和美化显示效果的方法
Apr 23 #HTML / CSS
HTML5的hidden属性兼容老浏览器的方法
Apr 23 #HTML / CSS
HTML5中的Scoped属性使用实例
Apr 23 #HTML / CSS
HTML5添加鼠标悬浮音响效果不使用FLASH
Apr 23 #HTML / CSS
html5菜单折纸效果
Apr 22 #HTML / CSS
You might like
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
很多人都是用下面的js刷新站IP和PV
2008/09/05 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python内存读写操作示例
2018/07/18 Python
Python制作exe文件简单流程
2019/01/24 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
Python爬取某平台短视频的方法
2021/02/08 Python
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
党支部公开承诺书
2014/03/28 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
化验室岗位职责
2015/02/14 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers