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

Tii*_*iit 3 maps firefox google-maps google-maps-api-3

我正在使用jquery和谷歌地图v3创建一个页面,我正试图在谷歌地图上显示一个标记.出于某种原因,我在使用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
Run Code Online (Sandbox Code Playgroud)

事实:*它适用于Safari*如果我更改MarkerImage网址,它可以正常工作

我用来添加标记的代码如下:

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
});
Run Code Online (Sandbox Code Playgroud)

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

http://geoape.com/_wp.php

Tii*_*iit 9

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

更确切地说:图像/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)的情况下,markerImage将缩放到定义的大小(22x22),在b)和c)的情况下,22x22将被裁剪出原始的30x30大小.