現状のアニメーション全体について注目に値することがいくつかあります。
- マーカーのz-indexは、マーカーが最終位置に来るまで設定されないため、アニメーション中に一貫性がありません。したがって、ドロップ中にそれを制御するために実際にできることは、各マーカーの
setMap
機能への呼び出しを可能な限り順序付けることだけです。ドロップしながら順番にスタックするようにそれらを誘導します。つまり、最初に一番後ろのオブジェクトの関数を呼び出し、スタック順に画像を近づけます。ただし、アニメーションが完了すると、それらは常に正しい順序になります。
- 呼び出しの順序を制御するには、オブジェクト
setMap
を格納する変数に一意の名前を付ける必要がありMarker
ます。
- マーカーはマップに追加されず、読み込まれるまでアニメーション化されないため、コードで画像オブジェクトを作成して画像をプリロードし、マーカーアニメーションを
onload
すべて終了したら、イベントからのコールバックとして設定することをお勧めします。 。
これらすべてが整っていても、画像は個別にドロップされるため、探している効果が正確に得られない可能性がありますが、これはおそらく、管理できる限り画像を近づける方法です。
Zインデックスの設定
まず、マーカーのz-indexは、コンストラクターMarkerOptions
に渡すものの1つとして簡単に設定できます。Marker
var marker1 = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: pos,
map: map,
icon: image1,
zIndex: 1
});
アイコンアンカーの設定
次に、マーカーに提供する画像の位置を変更するには、オブジェクトにメンバーとしてMarkerOptions
含めることができるため、このオブジェクトを使用してアイコンのアンカーを示します。MarkerImage
icon
var image1 = new google.maps.MarkerImage(
"http://dl.dropbox.com/u/1597153/00000000000000000000000000000000.png",
null,
null,
new google.maps.Point(16, 49));
2番目と3番目のパラメーターはオプションであり、指定されていない場合は自動的に作成されるため、実際にはアンカーパラメーターの値を提供することにのみ関心があります。
画像のOnLoadコールバックの作成
画像をプリロードする場合は、これを強くお勧めします。3つの画像オブジェクトを作成し、OnLoadハンドラーを各オブジェクトにバインドしてから、画像のsrc
プロパティを<strong>この順序で設定します。マーカーを作成してマップに追加するコードは、3つの画像すべてが読み込まれた後にのみ実行する必要があります。
// Create image objects to force pre-loading
var domImg1 = new Image(),
domImg2 = new Image(),
domImg3 = new Image();
// Instantiate variables for iteration
var images = [domImg1, domImg2, domImg3],
j = 0;
// Bind an OnLoad handler that checks to see if all three images have been pre-loaded
for (i in images) {
images[i].onload = function() {
if (++j == 3) {
// Create markers and add to map here
}
}
}
// Set the src property to start the download and trigger the onload events
domImg1.src = "http://dl.dropbox.com/u/1597153/00000000000000000000000000000000.png";
domImg2.src = "http://dl.dropbox.com/u/1597153/pin-white.png";
domImg3.src = "http://dl.dropbox.com/u/1597153/marker.png";
このフィドルでここで示したテクニックの実用的なデモを提供したので、それをチェックしてください。うまくいけば、それがどのように組み合わされるかについてのアイデアが得られます。