如何在较旧的Google Map InfoWindows之上显示更新的Google Map InfoWindows

时间:2012-12-22 08:58:43

标签: javascript jquery html css google-maps

我正在动态添加InfoWindows的谷歌地图。问题是,当两个InfoWindows重叠时,最近的一个不会总是在旧的InfoWindows之上。

如何确保后面的InfoWindow始终使用Javascript / jQuery显示在所有其他InfoWIndows之上?

当我通过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);
    }
}

popup是我收到新图片时创建的InfoWindow。假设两个图像具有几乎相同的坐标,我希望第二个InfoWindow位于顶部(z-index)。但是,大多数时候,第一个窗口保持在最顶层。

1 个答案:

答案 0 :(得分: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),
    });
});