2011-07-28 11 views
8

Estoy tratando de capturar una coordenada desde el evento táctil. Puedo capturar pero cuando doy zoom tienen grandes números y cuando puse esto en una funciónToque el punto con el mapa de zoomVer

newCoord = [mapView convertPoint:location toCoordinateFromView:mapView], 

Me da las coordenadas incorrectas. ¿Que puedo hacer?

Mi código:

UITouch *touch = [touches anyObject]; 

CGPoint location = [touch locationInView:touch.view]; 


NSLog(@"locationTOUCH:%f,%f", location.x,location.y); 

CLLocationCoordinate2D newCoord; 

newCoord = [mapView convertPoint:location toCoordinateFromView:mapView]; 

NSLog(@"coordinate-%f,%f", newCoord.latitude,newCoord.longitude); 
+1

Es touch.view lo mismo que MAPview? Probablemente sea mejor usar un UIGestureRecognizer para detectar toques en el mapa. Ver [esta respuesta] (http://stackoverflow.com/questions/4317810/how-to-capture-tap-gesture-on-mkmapview/4318835#4318835). Esa respuesta no menciona que también debe devolver SÍ en shouldRecognizeSimultaneouslyWithGestureRecognizer para evitar interferir con los reconocedores de gestos del mapa. – Anna

Respuesta

1

supongo que hay que solucionar cambiando

CGPoint location = [touch locationInView:touch.view]; 

a

CGPoint location = [touch locationInView:mapView]; 
+0

Ortwin tiene razón: los sistemas de coordenadas de las vistas probablemente no son los mismos, es por eso que se obtienen coordenadas incorrectas usando una para la detección táctil y la otra para la conversión de coordenadas. – psycho

Cuestiones relacionadas