H5地理定位

地理位置

if(navigator.geolocation){
        alert("您的浏览器支持定位!");
      }else{
        alert("请更新你的浏览器!");
      }

getCurrentPostion

if(navigator.geolocation){
        alert("您的浏览器支持定位!");        navigator.geolocation.getCurrentPosition(successCallback,errorCallback);
      }else{
        alert("请更新你的浏览器!");
      }
      function successCallback(result){
        //console.log(222);
        alert(parseInt(result.coords.latitude) +","+ parseInt(result.coords.longitude));
        console.log(result);
      }
      function errorCallback(error){
        //console.log(11);
        alert(error);
      }
if(navigator.geolocation){
        alert("您的浏览器支持定位!");        navigator.geolocation.getCurrentPosition(successCallback,errorCallback);
      }else{
        alert("请更新你的浏览器!");
      }
      function successCallback(position){
        //console.log(222);
        var coords = position.coords;
        var latitude = coords.latitude;
        var longitude = coords.longitude;
        var accuracy = coords.accuracy;
        alert(parseInt(latitude)+","+ parseInt(longitude));
        //console.log(result);
      }
      function errorCallback(error){
        //console.log(11);
        //alert(error);
        switch(error.code){
          case 3:
            alert("超时,请重试!");
            break;
          case 2:
            alert("位置信息不可用!");
            break;
          case 1:
            alert("用户拒绝了该浏览器的位置信息请求!");
            break;
          case 0:
            alert("未知错误!");
            break;
        }
      }
  • 配置对象 添加位置对象作为第三个参数options(是个对象{enableHeightAcuracy:true,timeout:5000,maximumAge:3000})
  • enableHighAcuracy:true(指示浏览器获取高精度的位置、默认为false,设置为true优先使用GPS定位)
  • timeout:5000 (指定获取地理位置的超时时间、默认不限时、单位为毫秒)
  • maximumAge:3000 (最长有效期、在重复获取地理位置时,此参数指定多久在此获取位置)

watchPosition(用在移动端,在设备位置发生变化后不断执行,用法和setCurrentPositon相同)

  • watchPosition(通常使用在移动端,移动设备位置一旦发生变化,就执行一次,获取位置)
var watcher;
      $('#bt1').click(function(){
        if(navigator.geolocation){
          alert("您的浏览器支持定位!");
          watcher = navigator.geolocation.watchPosition(successCallback,errorCallback);
        }else{
          alert("请更新你的浏览器!");
        }
      })
      $('#bt2').click(function(){
        if(navigator.geolocation){
          //alert("您的浏览器支持定位!");
          navigator.geolocation.clearWatch(watcher);
        }else{
          alert("请更新你的浏览器!");
        }
      })
      function successCallback(position){
        //console.log(222);
        var coords = position.coords;
        var latitude = coords.latitude;
        var longitude = coords.longitude;
        var accuracy = coords.accuracy;
        console.log(coords);
        alert(parseInt(latitude)+","+ parseInt(longitude));
        //console.log(result);
      }
      function errorCallback(error){
        //console.log(11);
        //alert(error);
        switch(error.code){
          case 3:
            alert("超时,请重试!");
            break;
          case 2:
            alert("位置信息不可用!");
            break;
          case 1:
            alert("用户拒绝了该浏览器的位置信息请求!");
            break;
          case 0:
            alert("未知错误!");
            break;
        }
      }

百度地图API

  • 引入API
<script src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥" type="text/javascript">   </script>
  • 使用百度地图API
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
      *{
        margin: 0;
        padding: 0;
      }
      html,
      body {
        width: 100%;
        height: 100%;
        background: greenyellow;
      }
    </style>
  </head>
  <body>
    <div id="map" style="width:100%;height:100%;"></div>
  <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
  <script src="http://api.map.baidu.com/api?v=2.0&ak=5aiK2z3bGTyMnInk6vjL0tZrU8GKHhl9" type="text/javascript"></script>
  <script type="text/javascript">
    var map = new BMap.Map("map");
    map.centerAndZoom('成都',15);
  </script>
  </body>
</html>
  • 用geolocation对象定位
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(callback: function, options: PositionOptions);
geolocation.getCurrentPosition(function(result) {
            var latitude = result.latitude;
            console.log(latitude);
});
  • 初始化百度地图(map用来实例化地图对象)
var mp = new BMap.Map(‘map’);  //创建地图对象
var point = new BMap.Point(121.491, 31.233);//创建中心点对象
mp.centerAndZoom(point, 15); //初始化地图,设置中心和缩放比例。
  • 初始化地图和定位结合使用
var map = new BMap.Map("map");
    var geolocation = new BMap.Geolocation();
    geolocation.getCurrentPosition(successCallback);
    function successCallback(position){
      console.log(position);
      map.centerAndZoom(position.point,20);
    }

map对象常见方法

  • enableDragging()/disableDragging() 启用/禁用地图拖拽
  • enableScrollWheelZoom()/disableScrollWheelZoom() 启用/禁用滚轮放大缩小
  • enableDoubleClickZoom()/disableDoubleClickZoom() 启用/禁用双击放大
  • enableKeyboard()/enableKeyboard () 启用/禁用键盘上下键移动地图
  • getCenter() 返回当前的中心点对象

百度API控件

  • 百度API控件
  • Control:控件的抽象基类,所有控件均继承此类的方法、属性。通过此类您可实现自定义控件。
  • NavigationControl:地图平移缩放控件,PC端默认位于地图左上方,它包含控制地图的平移和缩放的功能。移动端提供缩放控件,默认位于地图右下方。
  • OverviewMapControl:缩略地图控件,默认位于地图右下方,是一个可折叠的缩略地图。
  • ScaleControl:比例尺控件,默认位于地图左下方,显示地图的比例关系。
  • MapTypeControl:地图类型控件,默认位于地图右上方。
  • CopyrightControl:版权控件,默认位于地图左下方。
  • GeolocationControl:定位控件,针对移动端开发,默认位于地图左下方。
var MapTypeControl = new BMap.MapTypeControl();
map.addControl(MapTypeControl);
  • 应用
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style media="screen">
      *{
        margin: 0;
        padding: 0;
      }
      html,
      body {
        width: 100%;
        height: 100%;
        background: greenyellow;
      }
    </style>
  </head>
  <body>
    <button type="button" name="button" id="btn">定位</button>
    <div id="map" style="width:100%;height:100%;"></div>
  <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.js"></script>
  <script src="http://api.map.baidu.com/api?v=2.0&ak=5aiK2z3bGTyMnInk6vjL0tZrU8GKHhl9" type="text/javascript"></script>
  <script type="text/javascript">
      var map = new BMap.Map("map");
      initMap();
      initPosition();
    function initMap(){
      var opts = {
        anchor: BMAP_ANCHOR_BOTTOM_LEFT,
        offset:new BMap.Size(200,200),
        type:BMAP_NAVIGATION_CONTROL_LARGE
      }
      map.centerAndZoom("北京",20);
      var MapTypeControl = new BMap.MapTypeControl(opts);
      map.addControl(MapTypeControl);
      var NavigationControl = new BMap.NavigationControl();
      map.addControl(NavigationControl);
    }
    function initPosition(){
      $('#btn').click(function(){
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(successCallback);
      })
      function successCallback(position){
        //console.log(position);
        //var point = new BMap.Point(latitude,langtitude);
        map.centerAndZoom(position.point,20);
        //console.log(map.getCenter());
      }
    }
  </script>
  </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容