3

jqueryとgooglemapsv3でページを作成していて、googlemapsにマーカーを表示しようとしています。何らかの理由で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

4

1 に答える 1

9

問題はgoogle.maps.MarkerImageオブジェクトにあるようです。画像の実際のサイズがコードで定義されているとおりでない場合は、5番目の(scaledSize)パラメーターが正確です。何らかの理由で、画像サイズが正しく定義されておらず、scaledSizeが実際のサイズと一致しているが、画像サイズと一致していない場合、Firefoxはスケーリングを処理できません。

より正確に言うと、image/gfx/icons/poi.pngは22x 22pxではなく、30x30pxです。したがって、この問題を克服するには、次の3つの解決策があります。

  • a)それに応じて2番目のパラメータを変更します(sizeをgoogle.maps.Size(30,30));
  • b)それに応じて5番目のパラメーターを変更します(scaledSizeをgoogle.maps.Size(30,30))。
  • c)マーカー画像のサイズを変更する5番目のパラメーター(new google.maps.Size(22,22))を削除します。

a)の場合、markerImageは定義されたサイズ(22x22)にスケーリングされ、b)およびc)の場合、22x22は元の30x30サイズからトリミングされます。

于 2012-10-16T19:45:28.473 に答える