谷歌地圖 API 開發之新建地圖

最近項目用到谷歌地圖,可是看谷歌api文檔,對於國人來講,仍是比較吃力的,網上找資料也並無太多的資料,因此就想分享給你們。可是由於本人太懶了,每次研究技術完事時間一久就忘了,更別提分享了,在朋友的鼓勵支持之下,從新開始寫博客,共享給你們,若是有不到位或者錯誤的地方還但願你們多多指教。 畢竟交流纔會進步(^o^)/~ javascript

好了,廢話很少說開始正題。css

谷歌地圖官網:https://developers.google.com...
入門指南:https://developers.google.com...html

好了,下面就貼一段簡單的案例代碼,入門指南里的java

<!DOCTYPE html>
    <html>
      <head>
        <style type="text/css">
          html, body { height: 100%; margin: 0; padding: 0; }
          #map { height: 100%; }
        </style>
      </head>
      <body>
        <div id="map"></div>
        <script type="text/javascript">
            var map;
            function initMap() {
              map = new google.maps.Map(document.getElementById('map'), {
                center: {lat: -34.397, lng: 150.644},
                zoom: 8
              });
            }
        </script>
        <script async defer
          src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&callback=initMap"></script>
      </body>    
    </html>

引入的js裏須要一個祕鑰,如今引用的這個是可用的,若是想本身建立一個能夠去官網裏本身申請建立。segmentfault

下面說下Google 地圖建立注意點:api

1. 必須是用 <!DOCTYPE html> 聲明以 HTML5 形式聲明應用瀏覽器

大多數瀏覽器使用 "標準模式" 的 HTML5 文檔渲染頁面,這就意味着你的應用是兼容各大瀏覽器的。async

另外,若是沒有DOCTYPE標籤,瀏覽器則使用混雜模式 (quirks mode)進行渲染頁面內容。 提示: 應該注意的是一些"混雜模式"中的CSS並不能使用與標準模式中。在具體的應用中,全部基於百分比的大小都必須從父塊元素繼承 。若是在父模塊中沒有指定大小,默認值爲 0 x 0 像素。若是你想使用百分比,能夠在<style> 標籤中聲明,以下所示:函數

<style type="text/css">
    html {height:100%}
    body {height:100%;margin:0;padding:0}
    #googleMap {height:100%}
</style>

請輸入代碼 這個樣式聲明代表地圖模塊的(GoogleMap)應 HTML高度爲100%。ui

2. 添加 Google 地圖 API Key

<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>

將google生成的 API key 放置於 key 參數中(key=YOUR_API_KEY)。 The sensor 參數是必須的,該參數用於指明應用程序是否使用一個傳感器 (相似 GPS 導航) 來定位用戶的位置。參數值能夠設置爲 true 或者 false。

3. 地圖 DOM 元素

<div id="map"></div>

要想在網頁上顯示地圖,咱們必須爲其預留一個位置。咱們一般的實現方式是:建立一個命名的 div 元素,而後在瀏覽器的文檔對象模型 (DOM) 中獲取對該元素的引用。

4. 建立一個 Map 對象

map = new google.maps.Map(document.getElementById("map"), {...});

表示地圖的 JavaScript 類是 Map 類。該類的對象定義頁面上的單個地圖。(您能夠建立該類的多個實例–每一個對象都將定義頁面上的一個不一樣地圖。)咱們利用 JavaScript new 運算符來新建該類的實例。

當您新建地圖實例時,您須要在頁面中以地圖容器形式指定一個 <div> HTML 元素。HTML 節點是 JavaScript document 對象的子項,咱們經過 document.getElementById() 方法獲取對該元素的引用。

5. 定義地圖屬性

每一個地圖都有兩個必需選項:center 和 zoom。還能夠加上MapTypeId

map = new google.maps.Map(document.getElementById('map'), {
  center: {lat: -34.397, lng: 150.644},
  zoom: 8,
  mapTypeId: google.maps.MapTypeId.ROADMAP
});
  • center(中心點):中心屬性指定了地圖的中心,該中心經過座標(緯度,經度)在地圖上建立一箇中心點。

  • Zoom(縮放級數):zoom 屬性指定了地圖的 縮放級數。zoom: 0 顯示了整個地球地圖的徹底縮放。

  • MapTypeId(地圖的初始類型):mapTypeId 屬性指定了地圖的初始類型。mapTypeId包括以下四種類型:

    • google.maps.MapTypeId.HYBRID:顯示衛星圖像的主要街道透明層

    • google.maps.MapTypeId.ROADMAP:顯示普通的街道地圖

    • google.maps.MapTypeId.SATELLITE:顯示衛星圖像

    • google.maps.MapTypeId.TERRAIN:顯示帶有天然特徵(如地形和植被)的地圖

好了,上述基本都是從官網上貼來整理的,至此應該都能正常建立地圖了。


新手注意:

可是問題來了,由於當時作項目,項目比較大,並且時間很緊,有個細節當時沒注意,就是在寫js的過程當中,函數命名必需要要有 initMap(),否則會報錯,提示 Uncaught InvalidValueError: initMap is not a function.

項目中有的地圖是須要點擊彈出地圖層的,點擊事件纔要執行方法,然而每次都是自動執行,提示各類問題。百度谷歌了很久,答案紛飛,仍然毫無頭緒,而後又耐心從頭操做了一遍,看文檔,對,當看到引入的js的時候,裏面有個&callback=initMap ,臥槽,大罵一句,放到這麼不起眼的地方,這不坑人麼。 這句話應該刪除的。

圖片描述

後來仔細想一想,仍是本身技術不夠紮實,若是沒有callback 這個js裏的initMap() 又怎麼會執行呢?

今天先寫這麼多,明天寫下如何建立marker標記,記錄座標位置,加油(^o^)/~

相關文章
相關標籤/搜索