1. 程式人生 > >重溫---HTML5高階---地理定位

重溫---HTML5高階---地理定位

地理定位:使用JS獲取瀏覽器當前所在的地理座標,實現LBS(Location Based Service,基於定位的服務),具體資料包括:

      經度:longitude

      緯度:latitude

      海拔:altitude

      速度:speed

 技術上如何獲取瀏覽器所在的定位資訊:

 (1)手機中的瀏覽器

       靠手機內建的GPS晶片資料,精度在“米”級

       靠手機與之通訊基站資料,精度在“公里”級

 (2)PC中的瀏覽器

       靠IP地址反向解析,精度在“公里”級

 HTML5新增了用於獲取瀏覽器所在定位的物件:

  window.navigator.geolocation {

       getCurrentPosition: fn  用於獲取當前定位資訊

       watchPosition: fn  不停的監視定位資訊的改變

       clearWatch: fn 清除監視

  }

  ------------------------------------

  navigator.geolocation.getCurrentPosition(

       funcntion(pos){

              console.log('定位成功');

       }, function(err){

              console.log('定位失敗');

       }

  )

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <button id="btn">獲取當前瀏覽器所在的定位資訊</button>
  <script>
    btn.onclick=function () {
      window.navigator.geolocation.getCurrentPosition(succCB,errCB);
    }
    function succCB(pos) {
      console.log('成功獲取定位資訊');
      console.log('定位時間:'+pos.timestamp);
      console.log('經度:'+pos.coords.longitude);
      console.log('緯度:'+pos.coords.latitude);
      console.log('海拔:'+pos.coords.altitude);
      console.log('速度:'+pos.coords.speed);
    }
    function errCB(err) {
      console.log('獲取定位資訊失敗');
      console.log('錯誤編號:'+err.code);
      console.log('錯誤訊息:'+err.message);
    }
  </script>
</body>
</html>

如何在頁面中使用百度地圖 —— 擴充套件小知識

  從map.baidu.com下點選地圖開放平臺

  目前官網:  http://lbsyun.baidu.com/

  JS-API使用手冊:  http://lbsyun.baidu.com/index.php?title=jspopular

  第三方工具的學習步驟:

  (1)開啟官網,找定義,功能說明

http://lbsyun.baidu.com/

       可以基於百度地圖進行Android、iOS、Web應用開發

http://lbsyun.baidu.com/index.php?title=jspopular

  (2)找示例程式

       

  (3)找API文件,編寫自己的應用

使用百度地圖API步驟:

(1)註冊百度開發者賬號

(2)使用開發者賬號申請建立一個Web應用賬號,獲取一個訪問百度地圖的金鑰(AccessKey)

http://lbsyun.baidu.com/apiconsole/key

       

(3)編寫HTML網頁,出示當前網站的訪問金鑰,呼叫百度地圖API

  <script src="http://api.map.baidu.com/api?v=2.0&ak=您的網站在百度地圖申請的訪問祕鑰 ">

  </script>

  //建立地圖例項   

  var map = new BMap.Map("container");

  //建立一個指定的點 —— 文博大廈

  var p = new BMap.Point(116.300982,39.915907);

  //以指定點為中心顯示地圖

  map.centerAndZoom(p, 17);

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Hello, World</title>
  <style>
    body{
      height:100%;
      margin:0px;
      padding:0px
    }
    #container{
      width:800px;
      height:500px;
    }
  </style>
  <script src="http://api.map.baidu.com/api?v=3.0&ak=UasTkGnlX3NAKiS675ux8OCIrTP6AFDc">
    //v3.0版本的引用方式:src="http://api.map.baidu.com/api?v=3.0&ak=您的金鑰"
  </script>
</head>

<body>
  <h3>在自己的網頁中使用百度地圖</h3>
  <div id="container"></div>
<script>
  // 建立地圖例項
  var map = new BMap.Map("container");
  // 建立點座標
  var point = new BMap.Point(116.060038,39.507595);
  // 初始化地圖,設定中心點座標和地圖級別
  map.centerAndZoom(point, 15);

  //新增地圖控制元件
  map.addControl(new BMap.NavigationControl());
  map.addControl(new BMap.ScaleControl());
  map.addControl(new BMap.OverviewMapControl());
  map.addControl(new BMap.MapTypeControl());
  map.enableScrollWheelZoom(true);

  //新增地圖上的覆蓋物件 overlay
  //新增標記
  // var marker=new BMap.Marker(point);
  // //跳動的動畫
  // marker.setAnimation(BMAP_ANIMATION_BOUNCE);
  // map.addOverlay(marker);

  var myIcon = new BMap.Icon("http://lbsyun.baidu.com/jsdemo/img/fox.gif", new BMap.Size(300,157));
  var marker2 = new BMap.Marker(point,{icon:myIcon});  // 建立標註
  marker2.setAnimation(BMAP_ANIMATION_BOUNCE);
  map.addOverlay(marker2);              // 將標註新增到地圖中

  //新增一個說明視窗
  var param={
    width:100,
    height:30,
    title:'涿州物探局科技園區'
  };
  var win=new BMap.InfoWindow('地址:華陽東路',param);
  map.openInfoWindow(win,point);

</script>
</body>
</html>