Google maps IndexSizeError使用谷歌地图v3:使用google.maps.Marker

Google maps IndexSizeError使用谷歌地图v3:使用google.maps.Marker,google-maps,firefox,google-maps-api-3,maps,Google Maps,Firefox,Google Maps Api 3,Maps,我正在用jquery和GoogleMapsV3创建一个页面,并试图在GoogleMaps上显示一个标记。出于某种原因,我在Firefox上遇到了一个错误(并且标记没有显示在地图上): 事实: *它在Safari中起作用 *如果我更改MarkerImage url,它会工作 我用于添加标记的代码如下所示: var marker = new google.maps.Marker({ map: map, icon: new google.maps.MarkerImage(

我正在用jquery和GoogleMapsV3创建一个页面,并试图在GoogleMaps上显示一个标记。出于某种原因,我在Firefox上遇到了一个错误(并且标记没有显示在地图上):

事实: *它在Safari中起作用 *如果我更改MarkerImage url,它会工作

我用于添加标记的代码如下所示:

var marker = new google.maps.Marker({
    map: map,
    icon: new google.maps.MarkerImage(
        "/gfx/icons/poi.png",
        new google.maps.Size(22,22),
        new google.maps.Point(0,0),
        new google.maps.Point(11,11),
        new google.maps.Size(22,22)),
    position: point
});
我的测试可以在这里看到:


问题似乎出在google.maps.MarkerImage对象中,如果图像的实际大小与代码中的定义不符,则第五个(scaledSize)参数中的问题是准确的。由于某些原因,如果图像大小定义不正确,scaledSize与实际大小匹配,但与图像大小不匹配,Firefox无法处理缩放

更准确地说:image/gfx/icons/poi.png不是22 x 22px,而是30 x 30px。因此,要克服这一问题,有三种解决方案:

  • a) 相应地更改第二个参数(大小为 google.maps.Size(30,30))
  • b) 相应地更改第五个参数 (scaledSize为google.maps.Size(30,30))
  • c) 拆下第五个 参数(new google.maps.Size(22,22)),用于调整标记的大小 形象

如果是a)标记图像将缩放到定义的大小(22x22),如果是b)和c)22x22将从原来的30x30大小中裁剪出来。

Wow,真是个好发现。谢谢你的回答!这里有一个解决方案:
var marker = new google.maps.Marker({
    map: map,
    icon: new google.maps.MarkerImage(
        "/gfx/icons/poi.png",
        new google.maps.Size(22,22),
        new google.maps.Point(0,0),
        new google.maps.Point(11,11),
        new google.maps.Size(22,22)),
    position: point
});