2009-10-26 20 views
7

Qualcuno sa come posso aggiungere un marcatore a un'immagine (non una mappa) in Javascript?Aggiungi un marker a un'immagine in javascript?

Idealmente mi piacerebbe un gestore che si comporta come l'aggiunta di un indicatore a una mappa - cioè onclick provoca un marcatore per visualizzare al punto che è stato cliccato, e restituisce le coordinate x/y in pixel del punto che era cliccato.

È possibile?

Acclamazioni Richard

risposta

9

Sì, è possibile.

Anche se è completamente fattibile con solo javascript, userei qualche tipo di libreria come JQuery.

L'approccio sarebbe avere un elemento img con il proprio indicatore e quindi aggiungere un gestore click all'immagine che si desidera utilizzare come "mappa" che è moves l'indicatore su cui è stato fatto clic sull'elemento.

Ecco un esempio non testato:

<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: E questo è del tutto possibile senza JQuery troppo, naturalmente. Di seguito è riportato un esempio di codice proprio di questo.

<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. Funziona perfettamente, grazie! – Richard

+0

Non così veloce ... paginaX e paginaY mi danno la posizione dei pixel relativa all'angolo in alto a sinistra della pagina. C'è un modo per ottenere la posizione dei pixel all'interno dell'immagine? In caso contrario, immagino di poter calcolare la posizione dei pixel dell'angolo dell'immagine e sottrarla, ma sembra un po 'caotica. Grazie. – Richard

+0

Ci sono un sacco di diversi attributi non standardizzati che specificano le coordinate, ma sembrano essere molto specifici del browser. Per evitare che io sottrassi la posizione dell'immagine come hai detto tu. –

Problemi correlati