2017-02-15 174 views
0

我以前從未使用過Google Maps API,而且我也找不到任何類似的問題。我在這裏做了一些非常基本的工作, 我只想在Google Maps上鋪設OpenSeaMaps。指數:145未捕獲類型錯誤:map.mapTypes.insertAt不是函數

我在網上看到了幾個代碼示例,所以我使用下面的代碼,並且我得到一個問題,但我查看了文檔,並且這似乎並沒有被廢棄,並且處於幾個谷歌地圖API的例子,例如https://developers.google.com/maps/documentation/javascript/examples/maptype-overlay

有沒有人知道爲什麼這會拋出這個錯誤?

var map; 

    function initMap() { 

    map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 8, 
      center: { lat: 35.1264, lng: 33.4299 }, 
      mapTypeIds: ['satellite', 'OSM'] 
    }); 


    var osmMapTypeOptions = { 
      getTileUrl: function(coord, zoom) { 
       return "http://t1.openseamap.org/seamark/" + 
        zoom + "/" + coord.x + "/" + coord.y + ".png"; 
      }, 
      tileSize: new google.maps.Size(256, 256), 
      isPng: true, 
      maxZoom: 19, 
      minZoom: 0, 
      name: "OSM" 
    }; 


    var osmMapType = new google.maps.ImageMapType(osmMapTypeOptions); 


    map.setMapTypeId('OSM'); 
    map.mapTypes.insertAt(0, osmMapType); 

    } 
+0

所以,你實際上並沒有在你的代碼中的任何地方使用'map.mapTypes.insertAt',但仍然得到那個錯誤信息? – Connum

+0

我不明白你的意思?你是說如果我把它評論出來? – AnonyMouse

+0

在您提供的代碼片段中,沒有發生過'map.mapTypes.insertAt'。你是否忽略了它發生的部分,還是你所擁有的? – Connum

回答

1

的​​沒有.insertAt方法。見the documentation on MapTypes

它看起來對我說,你想要一個OverlayMapType

這確實有一個.insertAt方法,這對我的作品(注意,從map.mapTypes.insertAt(0, osmMapType);map.overlayMapTypes.insertAt(0,osmMapType);變化:

var osmMapTypeOptions = { 
    getTileUrl: function(coord, zoom) { 
    return "http://t1.openseamap.org/seamark/" + 
     zoom + "/" + coord.x + "/" + coord.y + ".png"; 
    }, 
    tileSize: new google.maps.Size(256, 256), 
    isPng: true, 
    maxZoom: 19, 
    minZoom: 0, 
    name: "OSM" 
}; 

var osmMapType = new google.maps.ImageMapType(osmMapTypeOptions); 

map.overlayMapTypes.insertAt(0,osmMapType); 
map.overlayMapTypes.insertAt(1,osmMapType); 

proof of concept fiddle

(在縮放級別小於10時似乎沒有太多圖像)

相關問題