J'ai une coordonnée GPS (latitude, longitude) et je veux rapidement placer une seule broche sur un MKMapView montrant cette position. Tout fonctionne très bien, mais comme je n'ai besoin que d'une seule broche sans légende, y a-t-il un moyen plus rapide de le faire ou ce que j'ai en dessous de ce qui doit être fait?
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation {
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"];
[pinView setAnimatesDrop:YES];
[pinView setCanShowCallout:NO];
return pinView;
}
NB: Je n'ai pas besoin de vérifier les vues d'annotation réutilisables car j'utilise uniquement la broche pour afficher une position dans une vue de détail (qui est détruite et recréée la prochaine fois qu'une vue de détail est demandée).
Au lieu d'utiliser le -mapView:viewForAnnotation:
méthode, il suffit de mettre le code d'un MKPointAnnotation
dans votre -viewDidLoad
méthode. Cela n'animera pas la goutte, mais c'est très facile.
// Place a single pin
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:centerCoordinate];
[annotation setTitle:@"Title"]; //You can set the subtitle too
[self.mapView addAnnotation:annotation];
Version Swift:
let annotation = MKPointAnnotation()
let centerCoordinate = CLLocationCoordinate2D(latitude: 41, longitude:29)
annotation.coordinate = centerCoordinate
annotation.title = "Title"
mapView.addAnnotation(annotation)
Vous pouvez définir le point et la région comme ceci:
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(lat, lon);
MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
MKCoordinateRegion region = {coord, span};
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:coord];
[self.staticMapView setRegion:region];
[self.staticMapView addAnnotation:annotation];
Vous pouvez simplement l'ajouter comme:
mapView.mapType = MKMapType.standard
let location = CLLocationCoordinate2D(latitude: 23.0225,longitude: 72.5714)
let span = MKCoordinateSpanMake(0.05, 0.05)
let region = MKCoordinateRegion(center: location, span: span)
mapView.setRegion(region, animated: true)
let annotation = MKPointAnnotation()
annotation.coordinate = location
annotation.title = "Javed Multani"
annotation.subtitle = "Surat, India"
mapView.addAnnotation(annotation)
Ça ressemble à:
La méthode la plus simple et la plus simple pour déposer une épingle et afficher l'emplacement actuel dans la vue Carte consiste simplement à ajouter ce code dans votre méthode viewDidLoad. (En supposant que l'emplacement actuel de cet utilisateur est déjà récupéré par vous).
NSString *display_coordinates=[NSString stringWithFormat:@"Latitude is %f and Longitude is %f",coordinate.longitude,coordinate.latitude];
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
[annotation setCoordinate:coordinate];
[annotation setTitle:@"Click Labs"];
[annotation setSubtitle:display_coordinates];
[mapView addAnnotation:annotation];
Version rapide de l'ajout de broches dans MKMapView:
func addPin() {
let annotation = MKPointAnnotation()
let centerCoordinate = CLLocationCoordinate2D(latitude: 20.836864, longitude:-156.874269)
annotation.coordinate = centerCoordinate
annotation.title = "Lanai, Hawaii"
mapView.addAnnotation(annotation)
}
Version rapide de la mise au point d'une région ou d'une épingle
func focusMapView() {
let mapCenter = CLLocationCoordinate2DMake(20.836864, -156.874269)
let span = MKCoordinateSpanMake(0.1, 0.1)
let region = MKCoordinateRegionMake(mapCenter, span)
mapView.region = region
}
Pour en savoir plus, visitez " Charger MKMapView à l'aide de Swift ".
Puisque vous voulez animer la goutte, vous devrez implémenter viewForAnnotation
comme vous l'avez fait car cette propriété est NO
par défaut.
Si vous n'avez pas besoin d'animer la suppression, vous pouvez éliminer complètement l'implémentation de la méthode viewForAnnotation
et pour désactiver la légende, définissez title
de l'annotation sur zéro ou vide lors de l'ajout de l'annotation.
Si vous avez besoin de l'animation de dépôt de broche et que vous affichez également l'emplacement de l'utilisateur (point bleu), vous devrez également vérifier MKUserLocation
dans viewForAnnotation
et retourner nil
.
Sinon, vous pouvez supprimer toute la méthode viewForAnnotation
et la punaise rouge par défaut apparaîtra sans animation, la légende s'affichera si title
n'est pas vide et l'emplacement de l'utilisateur apparaîtra comme un point bleu.