Estoy tratando de encontrar la manera de poner una anotación en un mapa según el lugar donde toque el usuario.Obtenga las coordenadas de un punto de mkmapview en iphone
He tratado subclasificar la MKMapView
y buscado la touchesBegan
al fuego, pero como resulta que, MKMapView
no utiliza el estándar toques métodos.
También he intentado subclasificar un UIView
, agregando un MKMapView
como un niño y luego escuchando HitTest y touchesBegan
. Esto funciona de alguna manera. si tengo mi mapa del tamaño total de la UIView
, y luego tener algo como esto
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return map;
}
y que funciona, mi touchesBegan
será capaz de obtener el punto usando
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches){
CGPoint pt = [touch locationInView:map];
CLLocationCoordinate2D coord= [map convertPoint:pt toCoordinateFromView:map];
NSLog([NSString stringWithFormat:@"x=%f y=%f - lat=%f long = %f",pt.x,pt.y,coord.latitude,coord.longitude]);
}
}
pero luego el mapa tiene un comportamiento alocado como que no se desplazará, y no se acercará a menos que se pulse dos veces, pero se puede alejar. y solo funciona si devuelvo el mapa como la vista. Si no tengo el método de prueba exitosa, el mapa funciona bien, pero obviamente no obtiene ningún dato.
¿Voy a equivocarme con las coordenadas? Por favor dime que hay una mejor manera. Sé cómo agregar anotaciones muy bien, simplemente no puedo encontrar ningún ejemplo de agregar una anotación donde y cuando un usuario toca el mapa.
versión Swift: http://stackoverflow.com/a/37860496/1151916 – Ramis