我以前从未使用过Google Maps API,也找不到与此在线发布的类似问题。我在这里做一些非常基本的事情,
我只想在Google Maps上放置OpenSeaMaps。

而且我在网上看到了几个代码示例,所以我使用下面的代码,但遇到一个问题map.mapTypes.insertAt is not a function,但是我查看了文档,但似乎并没有弃用它,有两个Google Maps 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);

  }

最佳答案

MapTypesRegistry没有.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的图像似乎并不多)

关于javascript - 索引:145未捕获的TypeError:map.mapTypes.insertAt不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42249042/

10-10 15:58