2015-10-30 63 views
0

我使用ArcMap 10.2程序,其中有幾個使用圖層創建的地圖。我需要導入這些地圖以用於Google Maps API v3。我已經導出了.kmz和.json等其他內容,但是導入到Google API中後無法查看圖層。這是一個代碼示例:ArcMap用於Google Maps API v3的導出地圖

var spain = new google.maps.LatLng(40.3964129438718, -3.7129999999999654); 
var mapa = new google.maps.Map(document.getElementById("mapaSigaus"), { 
     center: spain, 
     zoom: 6 
}); 

var kmzLayer = new google.maps.KmlLayer('URL/ESP_adm4.kmz'); 
kmzLayer.setMap(mapa); 

我在做什麼錯或我錯過了什麼?

回答

0

你想從你的文件系統或網址加載文件嗎? 用google.maps.KmlLayer調用一個名爲KmlOverlayService的服務,該服務解壓縮kmz並將其返回給您 - 這不適用於本地文件。

我試圖直接從kmz you linked添加文件,通過KmlOverlayService的加載時間超過10秒,無法添加到地圖。然而,當我在dropbox public folder了你的KMZ的副本,我添加到地圖:

var kmzLayer = new google.maps.KmlLayer({ 
    url:'https://dl.dropboxusercontent.com/u/5097876/Minimo.kmz', 
    map: mapa 
}); 

我得到顯示爲預期的KMZ層。 enter image description here

(請注意,你原來添加的KMZ沒有KmlLayerOptions對象的方法在這種情況下正常工作爲好。)

+0

值得一提的是,將數據導出爲geoJSON允許您使用以下內容從本地文件添加:'''mapa.data.loadGeoJson('/ path/to/my/file/Minimo.geojson');'''' 。你沒有得到符號體系,但它仍然是一個選擇。 – abenrob

+0

謝謝,謝謝!你是個天才!事實上,就是這樣。這是關於文件的路徑...我不明白爲什麼你應該有一臺服務器來從谷歌地圖API讀取文件...是響應時間? – Alejandro

+0

這就是谷歌地圖api給你! – abenrob

0

嘗試在KmlLayerOptions對象定義URL,就像這樣:

var kmzLayer = new google.maps.KmlLayer({url:'URL/ESP_adm4.kmz'}); 

可以分配在這樣的地圖,以及如果你想:

var kmzLayer = new google.maps.KmlLayer({ 
    url:'URL/ESP_adm4.kmz', 
    map: mapa 
}); 
+0

謝謝您的答覆。不,這不能解決問題...對不起。 – Alejandro

+0

我在[深入瞭解下面](http://stackoverflow.com/a/33477792/1913975)... – abenrob

0
  1. 的KMZ url必須是完整的網址:

http://www.geocodezip.com/geoxml3_test/kmz/ESP_adm4.kmz

a relative URL returns a KmlStatus of INVALID_REQUEST

  • 的KMZ文件需要滿足谷歌地圖的Javascript API KmlLayer渲染器的限制。從the documentation :),那些是:在谷歌地圖

    谷歌地圖目前對載入的KML文件的大小和複雜程度具體限制KML呈現

  • 規模和複雜性的限制。以下是對電流限制的總結:

    注意:這些限制是暫時的,隨時都可能發生變化。

    • 最大取出文件大小(原始KML,原始GeoRSS或壓縮KMZ)3MB

    • 最大未壓縮的KML文件大小爲10MB

    • 網絡的最大數量鏈節10

    • 文檔範圍功能的最大數量1,000

    您沒有提供一個鏈接到您的KMZ文件,但基於同一名稱的KMZ文件在gadm.org副本,它可能是〜5 MB壓縮KMZ,這是太大(它返回DOCUMENT_TOO_LARGEfor me的KmlStatus。

    如果文件是從您的本地域提供的,您可以使用geoxml3來呈現它,但是may have performance issues (geoxml3 decompresses it to KML, then renders that KML as native Google Maps Javascript API v3 objects),這就是Google限制它們將呈現的文件大小的原因。

    +0

    非常感謝您的答覆和您的時間。我將鏈接傳遞給我無法顯示的特定文件:http://dosisproject.es/Minimo.kmz。它涵蓋了962kb的區域,所以我明白這不是大小限制的問題。令我驚訝的是,例如,在Google Maps Engine中,文件可以正確顯示:https://www.google.com/maps/d/edit?mid=z5zZN3j5oKac.kX6C6EZw-b3U&usp=sharing – Alejandro

    +0

    [您的文件是返回'FETCH_ERROR'的KmlStatus](http://www.geocodezip.com/v3_GoogleEx_layer-kml_linktoB.html?filename=http://dosisproject.es/Minimo.kmz)。如果我將[該文件複製到我的服務器,它工作](http://www.geocodezip.com/v3_GoogleEx_layer-kml_linktoB.html?filename=http://www.geocodezip.com/geoxml3_test/kmz/Minimo.kmz) – geocodezip

    +0

    確切地說......問題在於服務器和訪問。你配置了哪些工作,而不是我的? – Alejandro