z-Index de superposition dans google maps version 3
Je vais essayer d'obtenir un recouvrement dans l'api google maps v3 pour apparaître au-dessus de tous les marqueurs. Mais il semble que l'api de google mets toujours mes superposition avec le moins de z-index de priorité. Seule solution que j'ai trouvé est d'itérer jusqu'à travers l'arbre du DOM et de définir manuellement le z-index pour une valeur plus élevée. Mauvaise solution.
Je vais ajouter à mes un nouveau div de mon superposition avec:
onclick : function (e) {
var index = $(e.target).index(),
lngLatXYposition = $.view.overlay.getProjection().fromLatLngToDivPixel(this.getPosition());
icon = this.getIcon(),
x = lngLatXYposition.x - icon.anchor.x,
y = lngLatXYposition.y - icon.anchor.y
$('<div>test</div>').css({ left: x, position: 'absolute', top: y + 'px', zIndex: 1000 }).appendTo('.overlay');
}
J'ai essayé tous les biens que je pourrais penser lors de la création de mon superposition. zIndex, zPriority etc.
Je vais ajouter mon superposition avec:
$.view.overlay = new GmapOverlay( { map: view.map.gmap });
Et GmapOverlay hérite de google.cartes.OverlayView.
Des idées?
..fredrik
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas changer le zIndex d'un OverlayView (il n'a pas de tels biens), mais il y a des volets qui contient les nœuds DOM. C'est là que vous pouvez utiliser la propriété z-index;
Si quelqu'un a le même problème que moi, voici mon problème et la solution:
J'ai besoin d'un OverlayView qui permettrait d'ajouter des info-bulles pour les marqueurs, mais mon menu contextuel de superposition ne cessaient de derrière les marqueurs.
J'ai mis en place une sous-classe de la OverlayView comme par Google de la documentation:
https://developers.google.com/maps/documentation/javascript/customoverlays
Lorsque vous écrivez votre propre
OverlayView.prototype.onAdd
fonction, vous devez spécifier à quel Volet de joindre votre superposition. J'ai juste copié le code, sans devoir lire les environs explication.Dans leur code, ils attachent la superposition de la
overlayLayer
volet:Mais il ya beaucoup de différents MapPanes vous pouvez utiliser:
Je voulais la superposition de planer sur toutes les autres informations sur la carte, j'ai donc utilisé le
floatPane
volet et le problème est résolu.Donc, au lieu de :
vous utilisez ce :
Afin d'être en mesure de jouer avec le paneType de la mapLabel classe, j'ai ajouté un paneType propriété de la MapLabel classe de google bibliothèque utilitaire (https://code.google.com/p/google-maps-utility-library-v3/source/browse/trunk/maplabel/src/maplabel.js?r=303).
C'est utile pour créer l'étiquette de ne pas être cachés par une polyligne.
Veuillez trouver le code ajouts à la mapLabel.js fichier.
Exemple de code utilisant la paneType:
Merci!
Paramètre z-index à 104 pour la couche de recouvrement semble être la "magie" nombre" si vous vous souciez de l'interaction avec les marqueurs (c'est à dire en faisant glisser les marqueurs). Plus que 104 et vous ne pouvez pas interagir avec les marqueurs. Vous vous demandez si il est moins cassant solution...
Utiliser les panneaux.overlayMouseTarget.appendChild
Si vous souhaitez permettre à votre couche de ciblable par les clics de la souris (et de l'utilisation des manifestations telles que "cliquez sur" CSS ou pseudo ::hover), alors vous devez ajouter votre superposition de la carte à l'aide de
overlayMouseTarget
Voir aussi:
https://developers.google.com/maps/documentation/javascript/reference?csw=1#MapPanes
Avertissement: c'est un peu louches solution qui peut cesser de fonctionner à tout moment et vous ne devriez pas l'utiliser en production.
Pour ceux qui recherchent un moyen rapide et sale de la solution, cette CSS a fonctionné pour moi:
Utiliser à vos risques et périls!