Comment afficher des images au lieu d'épingles sur la carte? Jusqu'à présent, je peux seulement ajouter des épingles à la pression. Un exemple de code du .m serait extrêmement utile puisque je suis encore nouveau à la programmation iOS.Epingles personnalisées iOS MapKit
Répondre
#pragma mark -
#pragma mark MKMapView delegate
- (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if(annotationView)
return annotationView;
else
{
MKAnnotationView *annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:AnnotationIdentifier] autorelease];
annotationView.canShowCallout = YES;
annotationView.image = [UIImage imageNamed:@"someImage.png"];
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside];
[rightButton setTitle:annotation.title forState:UIControlStateNormal];
annotationView.rightCalloutAccessoryView = rightButton;
annotationView.canShowCallout = YES;
annotationView.draggable = YES;
return annotationView;
}
return nil;
}
EDIT:
Je pourrais vous expliquer tout au sujet de la MKAnnotationView
, mais je pense que vous trouverez la documentation fournie par Apple pour être une explication beaucoup mieux que de toute autre source. Vérifiez la section d'aperçu dans le lien.
https://developer.apple.com/documentation/mapkit/mkannotationview
cela fonctionne. Merci. pourriez-vous s'il vous plaît inclure une brève explication sur les paramètres passés et quel est l'identifiant d'annotation? est-ce similaire à la propriété tag de .net? – Bahamut
Au lieu d'utiliser "someImage.png", dans mon exigence, je dois utiliser UIView et utiliser [annotationView addSubView: myView]. Cela fonctionne bien. Mais ne pas appeler "didSelectAnnotationView" sur le robinet de celui-ci. Quelque chose ne va pas? – Satyam
Peut-être que vous devez désactiver l'interaction de l'utilisateur de cette vue. – Robin
Aller à l'organisateur de Xcode, puis aller à la documentation et la recherche weathermap il montre par exemple pour la carte avec y compris des images à l'annotation.
#pragma mark -
#pragma mark MKMapView delegate
-(void)addAllPinsOnMapView
{
MKCoordinateRegion region = mapViewOffer.region;
region.center = CLLocationCoordinate2DMake(12.9752297537231, 80.2313079833984);
region.span.longitudeDelta= 0.1f;
region.span.latitudeDelta= 0.1f;
[mapViewOffer setRegion:region animated:YES];
mapViewOffer.delegate=self;
arrMapPin=[[NSMutableArray alloc] init];
NSArray *name=[[NSArray alloc]initWithObjects:
@"Title1",
@"Title2",
@"Title3", nil];
NSMutableArray *arrCoordinateStr = [[NSMutableArray alloc] initWithCapacity:name.count];
[arrCoordinateStr addObject:@"12.970760345459,80.2190093994141"];
[arrCoordinateStr addObject:@"12.9752297537231,80.2313079833984"];
[arrCoordinateStr addObject:@"12.9788103103638,80.2412414550781"];
for(int i = 0; i < name.count; i++)
{
NSArray *components = [[arrCoordinateStr objectAtIndex:i] componentsSeparatedByString:@","];
double latitude = [components[0] doubleValue];
double longitude = [components[1] doubleValue];
MKPointAnnotation *mapPin = [[MKPointAnnotation alloc] init];
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude);
mapPin.title = [name objectAtIndex:i];
mapPin.coordinate = coordinate;
[mapViewOffer addAnnotation:mapPin];
}
}
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:
(MKAnnotationView *)view
{
NSLog(@"%@",view.annotation.title);
NSLog(@"%f",view.annotation.coordinate.latitude);
NSLog(@"%f",view.annotation.coordinate.longitude);
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(calloutTapped:)];
[view addGestureRecognizer:tapGesture];
}
-(void)calloutTapped:(UITapGestureRecognizer *) sender
{
NSLog(@"Callout was tapped");
MKAnnotationView *view = (MKAnnotationView*)sender.view;
id <MKAnnotation> annotation = [view annotation];
if ([annotation isKindOfClass:[MKPointAnnotation class]])
{
//[self performSegueWithIdentifier:@"annotationDetailSegue" sender:annotation];
OfferDetailsViewController *objOfferDetailsViewController = [[OfferDetailsViewController alloc]init];
[self.navigationController pushViewController:objOfferDetailsViewController animated:YES];
}
}
- (MKAnnotationView *)mapView:(MKMapView *)theMapView
viewForAnnotation:(id <MKAnnotation>)annotation
{
MKAnnotationView *pinView = nil;
static NSString *defaultPinID = @"annotationViewID";
pinView = (MKAnnotationView *)[mapViewOffer dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (pinView == nil){
pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID];
}
pinView.canShowCallout = YES;
pinView.image = [UIImage imageNamed:@"placeholder"];
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[infoButton addTarget:self action:@selector(infoButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
pinView.rightCalloutAccessoryView = infoButton;
return pinView;
}
ajoute une description avant de publier un extrait de code long. –
- 1. Phonegap 2.7 - IOS MapKit
- 2. IOS 4.3.2 Annotations MapKit
- 3. iOS Mapkit - Erreur SetRegion
- 4. OpenCv - conflit iOS MapKit
- 5. Mapkit didSelectAnnotationView: Comment obtenir des propriétés personnalisées?
- 6. Annotation MapKit IOS 5 ne pas afficher
- 7. MapKit iOS Pins Grabbing Focus
- 8. Calculer la distance du mouvement iOS MapKit
- 9. Crash avec MapKit sur iOS 6
- 10. ios MapKit MKOverlayView animation se passe instantanément
- 11. Carte IOS (API Google Map vs MapKit?)
- 12. iOS MapKit Méthode didAddAnnotationViews non appelée
- 13. ios MapKit, en suivant un chemin
- 14. iOS polices personnalisées
- 15. Comment ajouter des broches personnalisées à l'iPhone MapKit?
- 16. Belles interfaces utilisateur iOS personnalisées
- 17. iOS - NavController et vues personnalisées
- 18. iOS 5 MapKit, MKPlacemark, exécutant l'application iOS 4.3 sur iOS 5
- 19. iOS MapKit légende personnalisée sur le côté de la broche
- 20. iOS MapKit bâtiment de l'étiquette sur la carte du parc
- 21. iOS Mapkit L'image personnalisée apparaît 2X plus grande
- 22. Ajouter ma propre carte à/sur MapKit iOS
- 23. MapKit iPhone développement - Ajout d'annotations à une carte - iOS SDK
- 24. IOS MapKit - pin de charge de MSSQL ou MySQL
- 25. iOS MapKit - cacher les points qui se chevauchent?
- 26. iOS Emplacement de l'utilisateur MapKit sans initialiser la carte
- 27. Allant de Google Maps pour iOS MapKit sur
- 28. iOS Action, basée sur la région dans MapKit
- 29. iOS MapKit, comment forcer la basse résolution sur la rétine?
- 30. iOS: Utilisation de données vectorielles dans MKOverlay dans MapKit
Une petite recherche va un long chemin :) http://stackoverflow.com/questions/4579397/iphone-mapkit-adding-custom-image-and-pins-to-annotations et aussi: http://stackoverflow.com/questions/7124028/change-pin-design –