【问题标题】:Google Maps Javascript API "Uncaught Type Exception - undefined is not a function"Google Maps Javascript API“未捕获的类型异常 - 未定义不是函数”
【发布时间】:2012-07-11 23:56:43
【问题描述】:

我正在尝试使用 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 行。

有人知道为什么我会收到“未定义不是函数”错误吗?

【问题讨论】:

  • 看起来您正在异步加载 GMap 库,在这种情况下,google.maps.Size 在您调用它时可能不存在?如果是这样,您应该使用google.load 的第三个参数的callback 属性来确保对象首先存在。
  • 我有“google.setOnLoadCallback(initialize);”作为我脚本中的最后一行,这会达到同样的效果吗?
  • 是的,但是您还需要在该方法中移动 customTypeOptions = ... 代码。我已将此添加为您的正确答案。
  • 你应该在这里添加一个答案,而不仅仅是评论我的问题 :) 我不能投票或勾选一个不存在的答案(如果它有效)!
  • @breadbin 您在示例中使用的 javascript。请给我那个。我需要它..

标签: javascript google-maps-api-3


【解决方案1】:

这是因为在 GMap 库完成加载之前访问了 google.maps.Size。只需在你的初始化函数中移动任何引用google.maps 的东西(或者在你的google.load 调用中使用回调选项来做同样的事情)。

【讨论】:

  • 我没有再收到错误,但我的地图仍然没有加载:(
  • 如果您无法弄清楚为什么它们无法加载,最好再问一个问题。
  • 是的,无论如何感谢您的意见,很确定问题已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 2014-05-31
  • 1970-01-01
  • 2015-03-14
  • 2014-12-13
相关资源
最近更新 更多