montrer l'emplacement de point bleu dans l'iPhone MKMapView
Je suis en train d'élaborer une coutume des épingles dans une MapView dans mon iPhone.
Voici le code:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
static NSString *AnnotationViewID = @"annotationViewID";
MKAnnotationView *annotationView = (MKAnnotationView *)[myMapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
if (annotationView == nil)
{
annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease];
}
if ([[annotation title] isEqualToString:NSLocalizedString(@"Current Location",@"")]) {
MKPinAnnotationView *pin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease];
//pin.pinColor = MKPinAnnotationColorRed;
annotationView = pin;
}
else
{
NSString *pin = [NSString stringWithFormat:@"pin%i.png",[[annotation imgNumber] intValue]];
annotationView.image = [UIImage imageNamed:pin];//Canviar la chincheta per numero
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[annotationView setRightCalloutAccessoryView:button];
annotationView.annotation = annotation;
annotationView.canShowCallout = YES;
/********* Imagen a la izquierda en la burbuja *********/
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
//Set up the Left callout
UIButton *myDetailButton = [UIButton buttonWithType:UIButtonTypeCustom];
myDetailButton.frame = CGRectMake(0, 0, 23, 23);
myDetailButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
myDetailButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
//Set the image for the button
//[myDetailButton setImage:[UIImage imageNamed:@"botocorreu.png"] forState:UIControlStateNormal];
NSString *detailButton = [NSString stringWithFormat:@"%i",[[annotation imgNumber] intValue]];
[myDetailButton setImage:[UIImage imageNamed:detailButton] forState:UIControlStateNormal];
//Set the button as the callout view
annotationView.leftCalloutAccessoryView = myDetailButton;
annotationView.canShowCallout = YES;
}
return annotationView;
}
Cela fonctionne bien, mais show me les utilisateurs de l'emplacement avec une épingle rouge.
J'ai cocher la case "afficher l'emplacement de l'utilisateur" dans l'IB.
je voudrais utiliser la valeur par défaut point bleu qui se déplace automatiquement lorsque l'utilisateur est en mouvement, n'est pas correct?
Comment puis-je le faire?
Merci beaucoup.
OriginalL'auteur ValentiGoClimb | 2011-05-20
Vous devez vous connecter pour publier un commentaire.
Ajouter à la haut de la
viewForAnnotation
méthode:La spéciale de localisation de l'utilisateur annotation est de type
MKUserLocation
et le retour de néant, dans ce cas, dit la vue de la carte pour dessiner la vue par défaut, ce qui est le point bleu.Vous pouvez également supprimer ces lignes, car ils ne seront plus nécessaires:
La taille du cercle indique le degré de précision de la localisation est (plus petit signifie plus précis). Ne sais pas si cela peut être contrôlée dans le MKMapView à l'aide de CLLocationManager.
ok thnks. Et vous savez comment les introduire manuellement par le code de la userlocation. J'ai besoin de mettre l'utilisateur en un seul endroit. thnks
Malheureusement, l'animation blue dot view n'est pas disponible pour votre propre vue d'annotation et vous ne pouvez pas remplacer l'affichage de la carte de l'utilisateur, les coordonnées de l'emplacement. Vous pouvez créer votre propre annotation à un certain endroit, mais vous ne pouvez pas utiliser le point bleu de l'animation. Vous aurez à dessiner soi-même ou de prendre une capture d'écran de la dot et de l'utiliser comme une image dans votre vue d'annotation.
OriginalL'auteur