教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

通過(guò)Geolocation API調(diào)用百度地圖

更新時(shí)間:2022年03月31日17時(shí)31分 來(lái)源:傳智教育 瀏覽次數(shù):

前面介紹了Geolocation API的基本內(nèi)容,Geolocation API更大的價(jià)值在于與GIS(地理信息系統(tǒng))的結(jié)合。要想實(shí)現(xiàn)與GIS的結(jié)合首先需要一個(gè)地圖的數(shù)據(jù)庫(kù),百度地圖提供了地圖、導(dǎo)航、街景等豐富的地圖數(shù)據(jù)庫(kù)正好可以為我們所用。接下來(lái)通過(guò)一個(gè)案例demo3-7來(lái)演示如何調(diào)用百度2D地圖。

demo3-7.html

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
   <title>Geolocation</title>
   <style type="text/css">  
      html {
         height: 100%
      }

      body {
         height: 100%;
         margin: 0px;
         padding: 0px;
      }

      #container {
         height:100%
      }
   </style>
</head>
<body>
    <div id="container"></div>
    <!--引入百度javascript版API -->
    <script                   src="http://api.map.baidu.com/apiv=2.0&ak=0A5bc3c4fb543c8f9bc54b77bc155724"></script>
    <script>

       if(navigator.geolocation) {
           navigator.geolocation.getCurrentPosition(function (position) {

              var latitude = position.coords.latitude; // 緯度
              var longitude = position.coords.longitude; // 經(jīng)度

              console.log(position);
              /********************/
              // container表示主到哪個(gè)容器
              var map = new BMap.Map("container"); 

              // 把經(jīng)度緯度傳給百度
              var point = new BMap.Point(longitude, latitude);

              map.centerAndZoom(point, 15);

              /****************************/

              // 只寫(xiě)上面三行就可出現(xiàn)地圖了,并且會(huì)定位

              // 定義好了一個(gè)圖片標(biāo)記
              var myIcon =new BMap.Icon(
              "http://developer.baidu.com/map/jsdemo/img/fox.gif", 
              new BMap.Size(300, 157));

              // 創(chuàng)建標(biāo)注
              var marker = new BMap.Marker(point, {icon: myIcon});
              map.addOverlay(marker);
          });
      }

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

由于IE瀏覽器對(duì)百度API的支持情況較好,用IE瀏覽器訪問(wèn)該頁(yè)面就會(huì)成功調(diào)用百度地圖,如圖3-14所示。

通過(guò)Geolocation API調(diào)用百度地圖

圖3-14調(diào)用百度地圖在demo3-7中,首先在第26行代碼中引入百度javaScript版API。30~33行代碼獲取當(dāng)前位置坐標(biāo)。41行代碼將坐標(biāo)值傳給百度地圖。為了更明顯的顯示我們當(dāng)前位置,在代碼50~52行定義一個(gè)標(biāo)記,并在55~56行將標(biāo)記定位在百度地圖的當(dāng)前坐標(biāo)上。需要注意的是,由于在實(shí)際開(kāi)發(fā)中經(jīng)度、緯度的值都會(huì)加密,所以圖3-14中顯示的位置可能與實(shí)際位置有偏差,不是錯(cuò)誤。

調(diào)用完2D地圖后,接下來(lái)看一下百度的全景圖。為了大家可以在普通PC機(jī)上可以演示該功能,在調(diào)用全景圖這個(gè)案例中,使用固定經(jīng)緯度來(lái)模擬獲取當(dāng)前位置。

接下來(lái)通過(guò)一個(gè)案例demo3-8來(lái)演示如何使用GeolocationAPI來(lái)調(diào)用百度地圖的全景圖。

demo3-8.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=4qXTGvclMqTZXkLsU3twnMA7"></script>
    <style type="text/css">
        body, html{
             width: 100%;
             height: 100%;
             overflow: hidden;
             margin:0;
               font-family:"微軟雅黑";
             }
             #panorama {
                height: 100%;
                width: 100%;
                overflow: hidden;
             }

     </style>
</head>
<body>
<div id="panorama"></div>

<script type="text/javascript">

   var jd="116.349902";
   var wd="40.065817";
   //全景圖展示
   var panorama = new BMap.Panorama('panorama');
   panorama.setPosition(new BMap.Point(jd, wd)); //根據(jù)經(jīng)緯度坐標(biāo)展示全景圖
   panorama.setPov({heading: -40, pitch: 6});
  //全景圖位置改變后,普通地圖中心點(diǎn)也隨之改變
   panorama.addEventListener('position_changed', function(e){
      var pos = panorama.getPosition();
      map.setCenter(new BMap.Point(pos.lng, pos.lat));
      marker.setPosition(pos);
   });
   </script>
</body>
</html>

用Chrome瀏覽器打開(kāi)demo3-8,效果如圖3-15所示。

調(diào)用百度全景圖
圖3-15調(diào)用百度全景圖

在demo3-8中,在28、29行代碼指定精、緯度。代碼32~40行為全景圖展示的代碼,該段代碼為固定寫(xiě)法,讀者只需替換經(jīng)緯度即可。Mac機(jī)讀者可以嘗試獲取當(dāng)前位置再進(jìn)行全景圖調(diào)用。






猜你喜歡:

Geolocation API如何獲取用戶(hù)當(dāng)前位置

H5的瀏覽器存儲(chǔ)有哪些?

HTML5開(kāi)發(fā)工具介紹:常用HTML5開(kāi)發(fā)工具有哪些?

Web API和API有什么關(guān)系?

傳智教育前端與移動(dòng)開(kāi)發(fā)培訓(xùn)課程

0 分享到:
和我們?cè)诰€(xiàn)交談!