J'essaie de comprendre comment mettre une annotation sur une carte en fonction de l'endroit où l'utilisateur touche.Obtenez les coordonnées d'un point de mkmapview sur iphone
J'ai essayé sous-MKMapView
et le classing cherché le touchesBegan
à feu, mais il se trouve que, MKMapView
ne pas utiliser les touches standards méthodes.
J'ai également essayé de sous-classer un UIView
, en ajoutant un MKMapView
comme un enfant, puis en écoutant HitTest et touchesBegan
. Cela fonctionne un peu. si j'ai ma carte la superficie de la UIView
, alors quelque chose comme ça
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return map;
}
et qui fonctionne, mon touchesBegan
sera en mesure d'obtenir le point à l'aide
- (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]);
}
}
mais la carte a un comportement un peu fou comme s'il ne défilait pas, et il ne va pas zoomer à moins d'avoir tapé deux fois mais vous pouvez faire un zoom arrière. et cela ne fonctionne que si je retourne la carte comme vue. Si je n'ai pas la méthode de test de coup, la carte fonctionne bien mais n'obtient évidemment aucune donnée.
Est-ce que je vais mal coordonner les coordonnées? S'il vous plaît dites-moi il y a une meilleure façon. Je sais comment ajouter des annotations, je ne trouve aucun exemple d'ajout d'une annotation où et quand un utilisateur touche la carte.
Version Swift: http://stackoverflow.com/a/37860496/1151916 – Ramis