0

InfoWindowsが動的に追加されたGoogleマップを使用しています。問題は、2つのInfoWindowsが重複している場合、最近のものが常に古いものの上にあるとは限らないことです。

Javascript / jQueryを使用して、後者のインフォウィンドウが常に他のすべてのインフォウィンドウの上に表示されるようにするにはどうすればよいですか?

WebSocketを介して新しい画像と座標を受け取ると、InfoWindowsが追加されます。これが私のコードです:

function addToMap(image) {
    console.log("In addToMap...");

    coordinates = image[2].split(',');
    pin=new google.maps.LatLng(coordinates[0], coordinates[1]);

    if(marker) {
        marker.setMap(null);
    }

    var markerIcon = image_car_icon;

    marker=new google.maps.Marker({
        position:pin,
        zIndexProcess: function( m )
        {
            return 9999999 + pin_count;
        },
        icon:markerIcon
    });

    marker.setMap(map);

    map.setCenter(marker.getPosition());

    pin_count++;

    if(image[0] != "NOP") {
        popup = new google.maps.InfoWindow({
            content:'<image id="pin_' + pin_count + '" src="data:image/png;base64,' + image[1] +'"/>',
        });

        popup.open(map, marker);
    }
}

ポップアップは、新しい画像を取得したときに作成される情報ウィンドウです。2つの画像の座標がほぼ同じであるとすると、2番目のインフォウィンドウを一番上(z-index)にします。ただし、ほとんどの場合、最初のウィンドウは一番上にとどまります。

4

1 に答える 1

0

私は解決策を見つけました。画像をハンドルとして使用して、マーカーのz-indexを手動で変更しています。marker_countは実行中のマーカーであるため、z-indexは前のマーカーよりも大きくなります。

google.maps.event.addListener(popup, 'domready', function() {
    console.log("DOM READY...........................");

    // Bring latest Image to top            
    e = $('#pin_' + img_count).parent().parent().parent().parent();

    e.css({
        'z-index' : (99999 + marker_count),
    });
});
于 2013-01-11T11:41:17.203 に答える