• HTML5地理定位


    在HTML规范中,增加了获取用户地理信息的API,这样使得我们可以基于用户位置开发互联网应用,即基于位置服务 (Location Base Service)
    API详解
    1、获取当前地理信息
    navigator.geolocation.getCurrentPosition(successCallback, errorCallback)
    2、重复获取当前地理信息
    navigator. geolocation.watchPosition(successCallback, errorCallback)
    当成功获取地理信息后,会调用succssCallback,并返回一个包含位置信息的对象position。position.coords.latitude 纬度
    position.coords.longitude经度
    position.coords.accuracy精度
    position.coords.altitude海拔高度
    当获取地理信息失败后,会调用errorCallback,并返回错误信息error
    应用
    在现实开发中,通过调用第三方API(如百度地图)来实现地理定位信息,这些API都是基于用户当前位置的,并将用位置位置(经/纬度)当做参数传递,就可以实现相应的功能。

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Document</title>
    </head>
    <body>
     <p id="demo">点击这个按钮,获得您的坐标:</p>
     <button onclick="getLocation()">试一下</button>
     <script>
      var x=document.getElementById("demo");
      function getLocation()   // 当我们点击了按钮就会触发这个函数
        {
        if (navigator.geolocation)  // 判断我们当前的设备是否支持 地理定位 
          {
           // 如果支持 就 获得当前的 地理位置  调用  getCurrentPosition 方法
          navigator.geolocation.getCurrentPosition(showPosition,showError);
             // showPosition  如果调用成功  调用这个函数 显示 当前位置
             // showError   如果调用失败  调用这个函数 
          }       
        else{  // 如果设备不支持  就返回这句话  当前浏览器不支持 地理定位
         x.innerHTML="Geolocation is not supported by this browser.";}
        }
         // 调用 成功的函数   返回当前位置的经纬度
      function showPosition(position)
        {
        x.innerHTML=  
        "Latitude: " + position.coords.latitude +    //  获得当前的纬度
        "<br />Longitude: " + position.coords.longitude;  // 获得当前的经度
        }
            // 调用 失败 的函数   返回当前位置的经纬度
      function showError(error)
        {
        switch(error.code) 
          {
          case error.PERMISSION_DENIED:
            x.innerHTML="User denied the request for Geolocation."
            // 用户无法定位的要求
            break;
          case error.POSITION_UNAVAILABLE:
            x.innerHTML="Location information is unavailable."
            // 位置信息不可用
            break;
          case error.TIMEOUT:
            x.innerHTML="The request to get user location timed out."
            // 获取用户位置的请求超时。
            break;
          case error.UNKNOWN_ERROR:
            x.innerHTML="An unknown error occurred."
            // 发生了一个不明错误
            break;
          }
        }
     </script>
    </body>
    </html>

    百度地图地理定位

    <!DOCTYPE html>
    <html>
    <head>
     <title>普通地图&全景图</title>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=7IYKvewcmfolQTNaQnTOPhfmBfo3uxD8"></script>
     <style type="text/css">
      body, html{width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
      #panorama {height: 50%;overflow: hidden;}
      #normal_map {height:50%;overflow: hidden;}
     </style>
    </head>
    <body>
     <div id="panorama"></div>
     <div id="normal_map"></div>
     <script type="text/javascript">
     //全景图展示
     var panorama = new BMap.Panorama('panorama');
     panorama.setPosition(new BMap.Point(116.404125,39.915488)); //根据经纬度坐标展示全景图
     panorama.setPov({heading: -40, pitch: 6});
     panorama.addEventListener('position_changed', function(e){ //全景图位置改变后,普通地图中心点也随之改变
      var pos = panorama.getPosition();
      map.setCenter(new BMap.Point(pos.lng, pos.lat));
      marker.setPosition(pos);
     });
     //普通地图展示
     var mapOption = {
       mapType: BMAP_NORMAL_MAP,
       maxZoom: 18,
       drawMargin:0,
       enableFulltimeSpotClick: true,
       enableHighResolution:true
      }
     var map = new BMap.Map("normal_map", mapOption);
     var testpoint = new BMap.Point(116.404125,39.915488);
     map.centerAndZoom(testpoint, 18);
     var marker=new BMap.Marker(testpoint);
     marker.enableDragging();
     map.addOverlay(marker);  
     marker.addEventListener('dragend',function(e){
      panorama.setPosition(e.point); //拖动marker后,全景图位置也随着改变
      panorama.setPov({heading: -40, pitch: 6});}
     );
     map.enableScrollWheelZoom();   //启用滚轮放大缩小,默认禁用
     map.enableContinuousZoom();    //启用地图惯性拖拽,默认禁用
     </script>
    </body>
    </html>

    地图名片

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Document</title>
    </head>
    <body>
     <iframe width="504" height="847" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://j.map.baidu.com/Fu6DN"></iframe>
    </body>
    </html>
    别废话,拿你代码给我看。
  • 相关阅读:
    P3391 【模板】文艺平衡树(Splay)
    P4198 楼房重建
    P1491 集合位置
    P3957 跳房子
    P4016 负载平衡问题
    bzoj1077: [SCOI2008]天平 差分约束
    bzoj1151: [CTSC2007]动物园zoo 状压dp
    bzoj1076: [SCOI2008]奖励关 状压dp
    bzoj1226: [SDOI2009]学校食堂Dining 状压dp
    bzoj1879: [Sdoi2009]Bill的挑战 状压dp
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/13707458.html
Copyright © 2020-2023  润新知