2017-09-06 1 views
0

suite de this question j'ai demandé hier ...modifier par programme OFFSET de MapBox marqueur via JavaScript

J'ajoute MapBox marqueurs à un tableau comme ceci:

var el = document.createElement('div' + index); 
el.className = 'marker'; 
deviceMarkers.push(new mapboxgl.Marker(el, { offset: [-50/2, -50/2] }).setLngLat([device.lat, device.lon]).addTo(map)); 

Ailleurs dans le code, j'extrait le marqueur via:

var deviceMarker = deviceMarkers[index]; 

Je dois maintenant être en mesure de changer le décalage de deviceMarker par programmation en javascript, pour s'assurer que l'image est toujours centrée lorsque le div est redimensionné avec le zoom.

Cela peut-il être fait, et si oui, comment?

+0

Qu'entendez-vous par "décalage de marqueur"? AFAIK il n'y a pas de chose appelée "offset" associée à un marqueur autre que l'offset z-index – xmojmr

+0

C'est dans le premier bloc de code, mate: {offset: [-50/2, -50/2]} Je veux pouvoir changer cela dynamiquement. C'est un décalage de position pour que l'image utilisée pour le marqueur soit centrée. Évidemment, cela doit changer à mesure que la taille de l'image change. – HomerPlata

+0

Il n'y a aucun moyen de le faire avec l'API actuelle. Je vous recommande de créer un nouveau marqueur avec le nouveau décalage et l'élément existant (ie new mapboxgl.Marker (oldMarker.getElement(), ...), puis supprimez l'ancien marqueur) – mollymerp

Répondre

1

Il n'existe aucun moyen de le faire avec l'API actuelle. Je vous recommande de faire un nouveau marqueur avec le nouveau décalage et l'élément existant (c'est-à-dire new mapboxgl.Marker(oldMarker.getElement(), ...) puis de supprimer l'ancien marqueur)