您已全部設定完成!

若要開始開發,請參閱我們的開發人員文件

啟用 Google Maps JavaScript API

為協助您開始,我們將先引導您使用「Google 開發人員控制台」來執行一些動作:

  1. 建立或選擇專案
  2. 啟用 Google Maps JavaScript API 與相關服務
  3. 建立適當的金鑰
繼續

將資料匯入到地圖

總覽

了解如何從本地或遠端來源匯入 GeoJSON 資料,並在地圖上顯示它。 此教學課程使用下面的地圖來說明將資料匯入到地圖的各種技術。

下一節顯示建立此教學課程所述之地圖所需的完整程式碼。

var map;
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 2,
    center: new google.maps.LatLng(2.8,-187.3),
    mapTypeId: 'terrain'
  });

  // Create a <script> tag and set the USGS URL as the source.
  var script = document.createElement('script');
  // This example uses a local copy of the GeoJSON stored at
  // http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp
  script.src = 'https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js';
  document.getElementsByTagName('head')[0].appendChild(script);
}

// Loop through the results array and place a marker for each
// set of coordinates.
window.eqfeed_callback = function(results) {
  for (var i = 0; i < results.features.length; i++) {
    var coords = results.features[i].geometry.coordinates;
    var latLng = new google.maps.LatLng(coords[1],coords[0]);
    var marker = new google.maps.Marker({
      position: latLng,
      map: map
    });
  }
}
<div id="map"></div>
/* Always set the map height explicitly to define the size of the div
 * element that contains the map. */
#map {
  height: 100%;
}
/* Optional: Makes the sample page fill the window. */
html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}
 <!-- Replace the value of the key parameter with your own API key. -->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap">
</script>

自己試試看

將游標放在程式碼區塊右上方,以複製程式碼或在 JSFiddle 中將它開啟。

<!DOCTYPE html>
<html>
  <head>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var map;
      function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
          zoom: 2,
          center: new google.maps.LatLng(2.8,-187.3),
          mapTypeId: 'terrain'
        });

        // Create a <script> tag and set the USGS URL as the source.
        var script = document.createElement('script');
        // This example uses a local copy of the GeoJSON stored at
        // http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp
        script.src = 'https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js';
        document.getElementsByTagName('head')[0].appendChild(script);
      }

      // Loop through the results array and place a marker for each
      // set of coordinates.
      window.eqfeed_callback = function(results) {
        for (var i = 0; i < results.features.length; i++) {
          var coords = results.features[i].geometry.coordinates;
          var latLng = new google.maps.LatLng(coords[1],coords[0]);
          var marker = new google.maps.Marker({
            position: latLng,
            map: map
          });
        }
      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>
  </body>
</html>

載入資料

此節說明如何從和 Maps JavaScript API 應用程式相同的網域,或是從不同的網域載入資料。

從相同的網域載入資料

Google 地圖資料圖層提供容納任意地理空間資料的容器(包括 GeoJSON)。 如果您的資料位於裝載在和 Maps JavaScript API 應用程式相同網域上的檔案中,您可以使用 map.data.loadGeoJson() 方法載入它。 該檔案必須位於相同的網域上,但您可以將它代管在不同的子網域中。

例如,您可以從 www.example.comfiles.example.com 做出要求。

map.data.loadGeoJson('data.json');

跨網域載入資料

您也可以從其他不屬於您的網域要求資料,前提是該網域的設定允許此類要求。 此權限的標準稱為跨原始來源資源共用 (CORS)。

如果網域允許跨網域要求,它的回應標頭應該包含下列宣告:

Access-Control-Allow-Origin: *

使用 Chrome 開發人員工具 (DevTools) 來了解網域是否已啟用 CORS。

從此類網域載入資料的方式,與從相同網域載入 JSON 相同:

map.data.loadGeoJson('http://www.CORS-ENABLED-SITE.com/data.json');

要求 JSONP

目標網域必須支援 JSONP 的要求,才能使用此技術。

要要求 JSONP,請使用 createElement()script 標記新增到文件開頭。

var script = document.createElement('script');
script.src = 'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp';
document.getElementsByTagName('head')[0].appendChild(script);

當該指令碼執行時,目標網域會傳遞資料做為 another script 的引數,通常名為 callback()。 目標網域會定義回呼指令碼名稱,該名稱是您在瀏覽器中載入目標網址時,頁面上的第一個名稱。

例如,在瀏覽器視窗中載入 http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp 以顯示名為 eqfeed_callback 的回呼名稱。

您必須在程式碼中定義回呼指令碼:

function eqfeed_callback(response) {
  map.data.addGeoJson(response);
}

使用 addGeoJson() 方法將已剖析的 GeoJSON 資料放置在地圖上。

為資料設定樣式

您可以透過將 GeoJSON 資料新增到地圖物件,以變更資料的外觀。

請閱讀開發人員指南,以取得為您的資料設定樣式的詳細資訊。

深入了解

  • GeoJSON 是以 JSON (JavaScript 物件標記法)為基礎,用來加密地理資料且廣為使用的開放式格式。 針對 JSON 資料所設計的 JavaScript 工具與方法也能夠搭配 GeoJSON 使用。

如需詳細資訊,請閱讀開發人員指南

  • JSONP 代表 padded JSON。 它是在網頁瀏覽器中執行之 JavaScript 程式使用的通訊方法,用來向位於不同網域的伺服器要求資料。

傳送您對下列選項的寶貴意見...

這個網頁
Google Maps JavaScript API
Google Maps JavaScript API
需要協助嗎?請前往我們的支援網頁