1

クリスマスマーケットでは、現在Googleマップの地図を作成しています。マーケットブースを表すさまざまなアイコンのスプライトをさまざまなサイズでロードします。

ここに画像の説明を入力してください


(グレー表示されたバージョンは非アクティブ化ステータス用です): http:
//www.felixkittler.de/area51/googlemaps/buden.html

ユーザーがズームインまたはズームアウトしない限り、これまでのところすべてが正常に機能します。ズームインまたはズームアウトしない場合、ブースは拡大縮小されないため、大きすぎたり小さすぎたりします。

同じマーカーを含むが、スケーリングされたmarkerImagesを使用して、別のアイコンのセットを事前定義する可能性があると思いました。残念ながら、これを機能させることはできません。

for(i=0; i<markerSizes.length; i++){
    var aktiv = new google.maps.MarkerImage(
        "http://www.felixkittler.de/area51/googlemaps/buden/SPRITE.png", 
        new google.maps.Size(markerSizes[i], 27, "px", "px"),
        new google.maps.Point(85, i*30),
        new google.maps.Point(0, 0),
        new google.maps.Size(markerSizes[i]*2, 14) //this doesn't work!!!
    );
    gicons_aktiv.push(aktiv);
}

私はまだzoom_changedイベントを追跡していませんが、スケーリングされたアイコンを使用するバージョンのファイルを設定しました:http:
//www.felixkittler.de/area51/googlemaps/buden_scaled.html (行で(x2)をスケールアップ) 116&125)。

この問題を解決する方法はありますか?私が使用しているスプライトはこれだけではないので、同じスプライトの複数の解像度をアップロードすることは避けたいと思います。スケールアップまたはスケールダウンの方がはるかに便利です。

ありがとう!!!

4

1 に答える 1

2

だから、私は自分で見つけました。このブログ記事を投稿
してくれた Marc Ridey に感謝します。

元のサイズのマーカー画像:

var original = new google.maps.MarkerImage(
    "http://www.path/to/sprite.png", 
    new google.maps.Size(markerSizes[i], 24), //marker height=24, width in array
    new google.maps.Point(0, i*30), // each row of the sprite grid is 30px tall
    new google.maps.Point(0, 0),
    null // use file dimensions 168 x 270px
);

50% 縮小されたマーカーを表示するためのマーカー画像:

var half = new google.maps.MarkerImage(
    "http://www.path/to/sprite.png", 
    new google.maps.Size(markerSizes[i]/2, 12),
    new google.maps.Point(0, i*15),
    new google.maps.Point(0, 0),
    new google.maps.Size(84, 135) // original dimension of sprite: 168 x 270 px
);

これが誰にも役立つことを願っています(:

于 2012-08-27T10:04:38.500 に答える