h5调用百度地图定位,h5地图自动定位如何实现

  h5调用百度地图定位,h5地图自动定位如何实现

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

  复制代码如下:

  navigator . geolocation . getcurrentposition(回调);

  成功获取坐标后将执行回调函数callback;回调方法的参数是获取的坐标点;然后,您可以初始化地图,设置控件、中心点和缩放级别,然后将点叠加添加到地图:

  复制代码如下:

  var map=新的BMap。map( mapDiv );//mapDiv是放置地图的Div的id。

  map.addControl(新的BMap。navigation control());

  map.addControl(新的BMap。scale control());

  map.addControl(新的BMap。overview mapcontrol());

  map.centerAndZoom(point,15);//点是坐标点,15是地图缩放级别,最高级别是18。

  var pointMarker=新的BMap。标记(点);

  map . add overlay(point marker);

  但是,其实这还不够,显示的结果也不准确。这是因为getCurrentPosition得到的坐标是GPS经纬度坐标,百度地图的坐标是经过特殊转换的。所以在获取定位坐标和初始化地图之间需要一步坐标转换,百度API中已经提供了这种转换方法。有单点转换或批量安装更换的方法:单点转换需要http://developer.baidu.com/map/jsdemo/demo/convertor.js,批量转换需要http://developer.baidu.com/map/jsdemo/demo/changeMore.js。这里,只有前者是必需的:

  复制代码如下:

  BMap。converter . translate(gpsPoint,0,callback);

  //gpsPoint:转换前的坐标,第二个参数是转换方法,0表示gps坐标转换成百度坐标,回调函数,参数是新坐标点。

  示例的详细代码如下:(引用中的ak是应用的键)

  复制代码如下:

  !声明文档类型

  html lang=zh-cn

  头

  meta name= viewport content= initial-scale=1.0,user-scalable=no /

  meta http-equiv= Content-Type Content= text/html;charset=utf-8 /

  标题/标题

  style type=text/css

  *{

  身高:100%;//设置高度,否则不显示。

  }

  /风格

  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.0ak=/script

  script type= text/JavaScript src= http://developer . Baidu . com/map/js demo/demo/converter . js /script

  脚本

  $(function(){

  navigator . geolocation . getcurrentposition(translate point);//定位

  });

  函数转换点(位置){

  var current lat=position . coords . latitude;

  var current lon=position . coords . longitude;

  var gpsPoint=新的BMap。点(currentLon,current lat);

  BMap。converter . translate(gpsPoint,0,init map);//转换坐标

  }

  函数initMap(point){

  //初始化地图

  map=新BMap。map( map );

  map.addControl(新的BMap。navigation control());

  map.addControl(新的BMap。scale control());

  map.addControl(新的BMap。overview mapcontrol());

  map.centerAndZoom(point,15);

  map.addOverlay(新BMap。标记(点))

  }

  /脚本

  /头

  身体

  div id=map/div

  /body

  /html

  开发过程中,感觉电脑定位速度有点慢,因为无法获取坐标而无法显示地图。建议用手机测试一下,定位更快。

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: