2012-07-11 61 views
0

我试图使用Google Maps JavaScript API显示自定义地图。特别是,我试图使用几个jQuery脚本来显示它,以允许地图的旋转。我不确定这部分是否相关。Google Maps Javascript API“未捕获类型异常 - 未定义不是函数”

当使用标准Google Map数据(即地球贴图)运行代码时,它可以正常工作。所以这里是我的地图创建代码:

 // Standard google map 
    var map = new google.maps.Map2(document.getElementById('map')); 
    map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13); 

这工作正常。但是,当我尝试使用自定义地图时,将自己的地图块(我已经在另一个项目中实现了,而没有地图旋转)提供给我,我得到“未定义不是函数”。下面是已被添加到使用自定义的瓷砖,而不是标准的谷歌地图数据的代码:

google.load("maps", "2.x"); 

var customTypeOptions = { 
     getTileUrl: function (coord, zoom) { 
      var normalizedCoord = getNormalizedCoord(coord, zoom); 
      if (!normalizedCoord) { 
       return null; 
      } 
      var bound = Math.pow(2, zoom); 
      return "http://MYTILESURL/" + zoom + "/" + normalizedCoord.x + "/" + (bound - normalizedCoord.y - 1) + ".jpg"; 
     }, 
     tileSize: new google.maps.Size(256, 256), 
     maxZoom: 3, 
     minZoom: 0, 
     radius: 1024, 
     name: 'custom' 
    }; 

var customMapType = new google.maps.ImageMapType(customTypeOptions); 

,然后在我的初始化()函数:

// Custom map 
    var myLatlng = new google.maps.LatLng(0, 0); 
    var myOptions = { 
    center: myLatlng, 
    zoom: 0, 
    streetViewControl: false, 
    mapTypeControlOptions: { 
    mapTypeIds: ['custom'] 
    } 
}; 

var map = new google.maps.Map(document.getElementById('map'), myOptions); 
map.mapTypes.set('custom', customMapType); 
map.setMapTypeId('custom'); 

我得到的错误是显示“line 46”,在我的代码中是“tileSize:new google.maps.Size(256,256)”。然而,我不确定这里报告的46是否与我正在阅读的46相同,即文件的第46行。

有没有人有任何想法,为什么我得到这个“未定义不是函数”错误?

+0

它看起来像你正在异步加载GMap库,在这种情况下'google.maps.Size'可能不存在你调用它时?如果是这样,你应该使用第三个参数的'callback'属性到'google.load'来确保对象的存在。 – Graham 2012-07-11 15:44:27

+0

我有“google.setOnLoadCallback(初始化);”作为我脚本的最后一行,是否会达到同样的效果? – breadbin 2012-07-11 15:50:42

+0

是的,但您也需要在该方法内移动'customTypeOptions = ...'代码。我已经将此添加为适合您的正确答案。 – Graham 2012-07-11 15:53:05

回答

3

发生这种情况是因为在GMap库加载完成之前正在访问google.maps.Size。只需在初始化函数中移动引用google.maps的任何内容(或使用google.load调用中的回调选项执行相同的操作)。

+0

我没有得到错误,但我的地图仍然没有加载:( – breadbin 2012-07-12 09:46:11

+0

如果你不知道为什么他们不会加载可能最好问另一个问题。 – Graham 2012-07-12 09:52:44

+0

诚然,无论如何感谢您的意见,很确定这个问题已经解决。 – breadbin 2012-07-12 10:04:48

相关问题