Foros del Web » Programando para Internet » Javascript »

calcular posicion dentro de una imagen

Estas en el tema de calcular posicion dentro de una imagen en el foro de Javascript en Foros del Web. Tengo la siguiente funcion para encontrar la posicion del cursor dentro de una imagen. Código: function ObtenerPos2(event) { if(document.all) diferencia=0; else diferencia=3; cosa=getObjeto("capa"); x=event.clientX-document.visor.offsetLeft+document.body.scrollLeft+diferencia-cosa.offsetLeft; y=event.clientY-document.visor.offsetTop+document.body.scrollTop+diferencia-cosa.offsetTop; ...
  #1 (permalink)  
Antiguo 18/04/2005, 11:41
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
calcular posicion dentro de una imagen

Tengo la siguiente funcion para encontrar la posicion del cursor dentro de una imagen.

Código:
function ObtenerPos2(event)
	 {
	         if(document.all)
	               diferencia=0;
			 else
			       diferencia=3;	   
			 cosa=getObjeto("capa");
		     x=event.clientX-document.visor.offsetLeft+document.body.scrollLeft+diferencia-cosa.offsetLeft;
		     y=event.clientY-document.visor.offsetTop+document.body.scrollTop+diferencia-cosa.offsetTop;
		  
		     alert(x+","+y);
		
	 }
la imagen tiene el nombre visor y calculo la posicion apartir de la posicion de cursor en la ventana, a esta posicion le resto la posicion del la imagen (como esta relativamente con respecto a una capa llamada capa tambien resto la posicion de la capa). Y pues por prueba y error he encontrado que hay marjen de error dependiendo del navegador que se utilice.

Hasta aqui todo bien, el problema que tengo es que para poder utilizarla necesito que esté la capa en posición absoluta y no puedo ponerlo por ejemplo dentro de una tabla para que la imagen se redimensione sin problemas de solaparse con otros elementos, porque de hacerlo asi tendria que poner la capa en posicion relativa con respecto a la tabla y demas elementos de esta, y es todo un show que no he resuelto para calcular la pura posicion de la imagen en la pantalla. En Internet explorer ese show para encontrar la posicion del cursor en la imagen se resuelve muy facil con:

Código:
alert( event.offsetX+","+event.offsetY);
Pero en mozilla y netscape no encuentro el equivalente, ¿alguna sugerencia?
  #2 (permalink)  
Antiguo 18/04/2005, 15:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola Troyano:

Planteé algo en este enlace: http://www.forosdelweb.com/f4/mapa-imagen-151719/
Las coordenadas del ratón se obtienen con un script que puedes bajarte en ese mensaje, y va bien en los navegadores más importantes (en las FAQs también hay algo)

Para conseguir un buen resultado creo que puse la imágen en un iframe sin márgenes donde obtenía las coordenadas del ratón y las enviaba a la página madre... (es un tema viejo y no estoy seguro, pero puedes ver el código)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 19/04/2005, 09:10
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
Saludos caricatos, gracias por tu comentario.
Te comento que ya revice tu codigo y pues sigo en las mismas, porque tu tambien utilizaste una posicion absoluta y el problema que yo tengo es que necesito detectar la posicion en una imagen que este posicionada en forma relativa en una tabla.
  #4 (permalink)  
Antiguo 19/04/2005, 10:38
 
Fecha de Ingreso: marzo-2002
Mensajes: 449
Antigüedad: 22 años, 1 mes
Puntos: 0
Si bueno al final y merced a la intervencion de otro compañero la funcion me quedo asi:

function storepoint(e, objeto){
resx=0
resy=0
while (objeto.tagName!="BODY")
{
resx+=objeto.offsetLeft
resy+=objeto.offsetTop

objeto=objeto.offsetParent
}
alert((e.clientX)+', '+(e.clientY));
alert((resx)+', '+(resy));
alert('reales'+(e.clientX-resx)+' , '+(e.clientY-resy));
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:12.