Theme NexT works best with JavaScript enabled

ShunNien's Blog

不積跬步,無以致千里;不積小流,無以成江海。

0%

Google Map Js Api 串接 Kml/kmz 檔案

Google Map 呈現 KML

使用 google map js API 來串接 KML/KMZ 檔案,其中需要注意的事項

KML/KMZ

Google Map js API kmllayer

要使用 Google Map js API 串接 KML/KMZ ,需要透過 kmllayer 這類別,而 Google 在處理這部分有一些注意事項

  • 取得最大檔案(包含原始 KML、原始 GeoRSS、壓縮後的 KMZ)大小是 3 MB
  • 最大未壓縮 KML 檔案是 10 MB
  • 最大的網路連線是 10
  • 最大文件內容數量是 1000
  • KML 圖層數量,官方說明在單一地圖顯示中,有數量限制,平均在 10 ~ 20 左右

最後,最重要的是,google 官方有註記上述的注意事項隨時都可能變更,所以要隨時關注 google document kmllayer

另外串接的 KML/KMZ 連結必須是公開的網址,不能使用相對路徑進行連接

範例

kml Layer 參數的設定

1
var layer = new google.maps.KmlLayer([opts]);
屬性 說明
clickable 圖層是否接收滑鼠事件,預設值為 true
map 顯示圖層的地圖物件
preserveViewport 自動縮放到 KML 圖層的中心,但是 KML 必須設定圖層的範圍邊界,假如沒有設定,則不會移動
screenOverlays 是否渲染至 overlays. 預設值為 true
uppressInfoWindows 點擊地圖時,禁止顯示跳出訊息視窗;預設值為 false
url KML 的 url
zIndex 顯示圖層的 z-index

所以在電腦的網頁上, clickable 設定為 false 時,因為事件冒泡被取消,所以 uppressInfoWindows 不管有無設定,都不會顯示 KML 圖層的訊息視窗。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var map = null;
var kmzLayer,kmlLayer;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: new google.maps.LatLng(25.04, 121.505)
});
}

var loadKmz = function () {
kmzLayer = new google.maps.KmlLayer({
url: 'https://shunnien.github.io/Victoria/sample.kmz',
map: map
});
}

var loadKml = function () {
kmlLayer = new google.maps.KmlLayer({
url: 'https://shunnien.github.io/Victoria/ty_bike_lane.kml',
//suppressInfoWindows: true,
map: map
});
}

線上範例

參考資料

歡迎關注我的其它發布渠道