複数のマーカーで満たされた Google マップを含む Web サイトがあります。各マーカーは、フェスティバルのイベントを表します。情報が大きすぎて情報ウィンドウに収まらないため、カスタム オーバーレイを使用することにしました。これまでのところ、部分的に成功しています。以下は私のイメージです。ご覧のとおり、オーバーレイはマーカーの下にあります。私の目標は、オーバーレイがマーカーと UI の上に来るようにすることです。
以下は私のコードサンプルです。
TxtOverlay.prototype.draw = function() {
// create info window
var div = document.createElement("div");
div.id = "mapOverlay";
div.innerHTML = this.txt;
div.style.cssText = 'background-color : #000; color: #FFF; border-radius: 15px; border-style : solid; border-width : 1px;padding: 10px; z-index: 9999; display: block; width: 460px; height: 460px; opacity: 0.4;';
// get projection
var map = this.map;
var overlayProjection = this.getProjection();
var anchor = overlayProjection.fromLatLngToDivPixel(this.pos);
div.style.position = "absolute";
div.style.left = (anchor.x - 240) + 'px';
div.style.top = (anchor.y - 240)+ 'px';
// bind created div to object var
this.div = div;
// add to map
var panes = this.getPanes();
panes.overlayLayer.appendChild(div);
console.log("prototype draw");
}
z-index を 9999 まで使用しました (4000 個のマーカー atm があります) が、機能しません。各マーカー ID には独自の z-index があることに注意してください。(fe マーカー id = 1 は z-index = 1、マーカー id = 2 は z-index = 2、マーカー id = 3 は z-index = 3、ect )
オーバーレイがマーカーと UI の両方の上にある場合は、地図と地図オブジェクトを操作する代わりに、クリック イベントをキャッチしてオーバーレイを削除する方が簡単です。
ありがとうございました。