2009-10-26 5 views
7

Wer weiß, wie ich eine Markierung zu einem Bild (keine Karte) in Javascript hinzufügen kann?Hinzufügen eines Markers zu einem Bild in Javascript?

Idealerweise hätte ich gerne einen Handler, der sich ähnlich wie ein Marker zu einer Map verhält - dh onclick bewirkt, dass ein Marker an dem Punkt angezeigt wird, an dem geklickt wurde, und gibt die x/y-Pixelkoordinaten des Punktes zurück geklickt.

Ist das möglich?

Prost Richard

Antwort

9

Ja, ist es möglich.

Obwohl es mit nur Javascript völlig machbar ist, würde ich eine Art von Bibliothek wie JQuery verwenden. Der Ansatz wäre, ein img-Element mit Ihrem Marker zu haben, und fügen Sie dann einen click -Handler zu dem Bild, das Sie als Ihre "Karte" verwenden möchten moves Ihre Marke an, wo das Element angeklickt wurde. Hier

ist ein nicht getestet Beispiel:

<img src="marker.png" id="marker" style="display: none; position: absolute;" /> 
<img src="map.png" id="map" /> 

<script type="text/javascript"> 
$('#map').click(function(e) 
{ 
    $('#marker').css('left', e.pageX).css('top', e.pageY).show(); 
    // Position of the marker is now e.pageX, e.pageY 
    // ... which corresponds to where the click was. 
}); 
</script> 

Edit: Und das ist durchaus möglich, ohne JQuery natürlich auch. Unten ist ein Code-Beispiel für genau das.

<img src="marker.png" id="marker" style="display: none; position: absolute;" /> 
<img src="map.png" id="map" /> 

<script type="text/javascript"> 
document.getElementById('map').onclick = function(e) 
{ 
    with(document.getElementById('marker')) 
    { 
     style.left = e.pageX; 
     style.top = e.pageY; 
     style.display = 'block'; 
    } 
    // Here you forward the coordinates e.pageX, e.pageY 
    // ... to whatever function that needs it 
}; 
</script> 
+0

Genius. Funktioniert perfekt, danke! – Richard

+0

Nicht so schnell ... pageX und pageY geben Sie mir die Pixelposition relativ zur oberen linken Ecke der Seite. Gibt es eine Möglichkeit, die Pixelposition innerhalb des Bildes zu erhalten? Wenn nicht, dann denke ich, kann ich die Pixelposition der Ecke des Bildes herausfinden und subtrahieren, aber es scheint ein bisschen chaotisch. Danke. – Richard

+0

Es gibt eine Reihe verschiedener nicht-standardisierter Attribute, die Koordinaten angeben, aber sie scheinen sehr Browser-spezifisch zu sein. Um das zu vermeiden, würde ich die Position des Bildes wie gesagt abziehen. –

Verwandte Themen