使用Google Maps v3时出现IndexSizeError错误:使用google.maps.Marker。

3

我正在使用jQuery和Google Maps V3创建一个页面,并尝试在Google地图上显示标记。但是不知何故,在Firefox中出现了错误(标记没有显示在地图上):

Error: IndexSizeError: Index or size is negative or greater than the allowed amount Source 
File: http://maps.gstatic.com/intl/en_us/mapfiles/api-3/9/17/main.js
Line: 96

事实: * 在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
});

我的测试可以在这里看到:

http://geoape.com/_wp.php

(该网页显示测试结果)

这里有一个解决方案: https://dev59.com/Yl4d5IYBdhLWcg3wCOyD - Lamaan Ball
1个回答

9
似乎问题出在google.maps.MarkerImage对象的第五个参数(scaledSize)上,特别是当图片的实际大小没有在代码中定义时。由于某些原因,Firefox无法处理缩放,如果图片大小定义不正确,则scaledSize匹配实际大小但不匹配图片大小。更确切地说:图像/gfx/icons/poi.png不是22x22像素而是30x30像素。为了解决这个问题,有三个方法:
a)相应地更改第二个参数(size to google.maps.Size(30,30));
b)相应地更改第五个参数(scaledSize to google.maps.Size(30,30));
c)删除第五个参数(new google.maps.Size(22,22)),它将调整标记图像的大小。
对于a),标记图像将被缩放到定义的大小(22x22);对于b)和c),22x22将从原始30x30大小裁剪出来。

哇,真是个好发现。感谢你的答案! - David K. Hess

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接