Google Maps Javascript API“未捕获类型异常 - 未定义不是函数”

时间:2012-07-11 15:38:04

标签: javascript google-maps-api-3

我正在尝试使用Google Maps Javascript API显示自定义地图。特别是,我试图使用几个jquery脚本来显示它,以允许旋转地图。我不确定那部分是否相关。

使用标准Google地图数据(即地球图块)运行代码时,效果很好。所以这是我的地图创建代码:

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

这很好用。但是,当我尝试使用自定义地图时,我自己的瓷砖(我已经在另一个项目中实现了,没有地图旋转),我得到“未定义不是一个函数”。以下是使用自定义图块而非标准Google地图数据添加的代码:

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);

然后在我的initialize()函数中:

// 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');

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

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

1 个答案:

答案 0 :(得分:4)

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