Я сделал так, чтобы одна переменная (наивысшая Z) установила zIndex для всех моих маркеров (в моем случае это было сделано с помощью полилиний) и приращений, а также одну переменную для временного хранения z-индекса любого маркера i "наведение мыши" на:
Установить переменные как глобальные:
var highestZ = 1; //set 1 for the first z-index
var tmpZIndex = 0;
Затем при построении / инициализации опций вашего маркера просто добавьте это
zIndex : highestZ++ //this sets the z-index for the marker and increments it for the next one
Образец (я сделал мой в цикле):
var routePath = new google.maps.Polyline({
strokeWeight: 5,
zIndex : highestZ++ //set zIndex and increment it
});
И, наконец, просто обработайте события mouseover и mouseout следующим образом:
google.maps.event.addListener(routePath, "mouseover", function() {
tempZIndex = routePath.zIndex; //set "this" z-index value to tempZIndex for mouseout
routePath.setOptions({
zIndex: highestZ + 1 //set the z-index to the highest z-index available plus 1 for it to be the topmost marker on mouseover
});
});
google.maps.event.addListener(routePath, "mouseout", function() {
routePath.setOptions({
zIndex: tempZIndex //set the z-index back to it's original set upon mouseover earlier
});
Мой ответ, вероятно, простой и общий и, конечно, неполный, чтобы сосредоточиться только на проблеме, надеюсь, вы сможете доработать ее в соответствии с вашим проектом.