0

多くの MarkerIcons を含むマップを表示しています。すべて同じ png に基づいていますが、さまざまなサイズにスケーリングされています。

基本サイズは 64 x 64 で、縮小すると期待どおりに動作します。

拡大すると、アイコンがトリミングされます。問題を説明する簡単な JSFiddle を作成しました。これはアイコンをスケーリングするコードです。私の理解では、最初のサイズはピクセル単位のソース画像の実際のサイズであり、次の 2 つの位置は原点とアンカーであり、現時点では気にしません。最終的なサイズはピクセル単位のスケーリングされたサイズです。

var icon_scaled = new google.maps.MarkerImage(
    img-filename,
    new google.maps.Size(64, 64),
    null,
    null,
    new google.maps.Size(scaled_size, scaled_size)
);

私が見つけた例では、最初のサイズを省略してブラウザに計算させることができます。これは Chrome では機能しますが、Firefox では失敗し、次のようなエラー メッセージが表示されます。

Error: IndexSizeError: Index or size is negative or 
greater than the allowed amount

ここでフィドル: http://jsfiddle.net/y8E54/

エラーなしで両方のブラウザーでこれを行うにはどうすればよいですか?

ところで:私は MarkerIcon が非推奨であることを知っています.ドキュメントに従って「アイコン」を使用してそれを置き換え、「サイズ」と「スケールサイズ」を指定すると、同じ種類の問題が発生します。

4

1 に答える 1

1

私は同じ問題を抱えていましたが、いくつかの調査と簡単な回避策の後、この頭痛を解決することができました.

これが私がしたことです。

これをFFで機能させるには、「サイズ」と「スケールサイズ」の両方の属性を設定する必要があるようです。しかし、その後、私を悩ませたことがもう1つありました。「サイズ」属性をアイコンの元のサイズに設定すると、アイコンは拡大縮小されましたが、アイコン全体が表示されずに突然トリミングされました-おそらくサイズ制限のためです。

そのため、「サイズ」属性をスケーリングされた画像の最大制限(私の場合は64)に設定すると、魅力的に機能しました。

                   cObject.setIcon({
                        url: cObjects[y].getIcon().url,
                        scaledSize: new google.maps.Size(icoSize, icoSize-1),
                        size:new google.maps.Size(64, 64)
                    });

于 2014-04-08T15:15:40.703 に答える