Ajouter des boutons pour afficher retournée par markerInfoWindow méthode du délégué
Je suis en train de créer et de renvoyer une vue personnalisée avec google maps ios SDK par la mise en délégué à l'autonomie et à l'aide du code suivant.
#pragma mark - GMSMapViewDelegate
-(UIView*)mapView:(GMSMapView *)mapView markerInfoWindow:(id<GMSMarker>)marker {
int popupWidth = 200;
int contentWidth = 180;
int contentPad = 10;
int popupHeight = 140;
int popupBottomPadding = 16;
int popupContentHeight = popupHeight - popupBottomPadding;
int buttonHeight = 30;
UIView *outerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, popupWidth, popupHeight)];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, popupWidth, popupContentHeight)];
[view setBackgroundColor:[UIColor whiteColor]];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(contentPad, 0, contentWidth, 22)];
[titleLabel setFont:[UIFont systemFontOfSize:17.0]];
titleLabel.text = [marker title];
UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(contentPad, 24, contentWidth, 20)];
[descriptionLabel setFont:[UIFont systemFontOfSize:11.0]];
descriptionLabel.text = [marker snippet];
[view addSubview:titleLabel];
[view addSubview:descriptionLabel];
UIButton *directionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
directionButton.frame = CGRectMake(contentPad, 45, contentWidth, buttonHeight);
[directionButton setTitle:@"Directions" forState:UIControlStateNormal];
[directionButton addTarget:self action:@selector(directionsPressed) forControlEvents:UIControlEventTouchDown];
UIButton *viewLocationButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[viewLocationButton addTarget:self action:@selector(viewLocationPressed) forControlEvents:UIControlEventTouchUpInside];
[viewLocationButton setTitle:@"View Location" forState:UIControlStateNormal];
viewLocationButton.frame = CGRectMake(contentPad, 80, contentWidth, buttonHeight);
//handle bottom dealio
UIImage *bottomImage = [UIImage imageNamed:@"map-pointer-bottom"];
UIImageView *bottomView = [[UIImageView alloc] initWithFrame:CGRectMake((popupWidth /2) - (bottomImage.size.width /2), (popupContentHeight), bottomImage.size.width, bottomImage.size.height)];
[bottomView setImage:bottomImage];
[outerView addSubview:view];
[outerView addSubview:bottomView];
[outerView addSubview:directionButton];
[outerView addSubview:viewLocationButton];
ListItem *li = (ListItem*)[marker userData];
self.currentItem = li;
NSLog(@"List Item %@ - %@", li.type, li.typeid);
return outerView;
}
-(void)directionsPressed {
NSLog(@"Directions Pressed");
}
-(void)viewLocationPressed {
NSLog(@"Location View Pressed");
}
- (void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(id<GMSMarker>)marker {
NSLog(@"Tap Captured");
}
La didTapWindowOfMarker est déclenché quand j'appuie sur la vue personnalisée, mais aucune des méthodes cible pour les boutons sont en cours de licenciement.
Toute idée de quoi cela peut-il être?
pouvez-vous s'il vous plaît poster la solution, je suis aux prises avec le même problème
OriginalL'auteur ercmcd | 2013-03-04
Vous devez vous connecter pour publier un commentaire.
Éventuellement, comme mentionné officiellement dans la documentation de Google Maps API Android, ci-dessous la restriction concernant infowindows s'applique à Google Maps iOS SDK également :
Info de la fenêtre n'est pas une Vue en direct, plutôt le point de vue est rendu sous la forme d'une image sur la carte. De ce fait, tous les auditeurs vous définissez sur le point de vue sont pas pris en compte et vous ne pouvez pas distinguer entre les événements de clic sur les différentes parties de la vue. Il vous est conseillé de ne pas placer des éléments interactifs, tels que des boutons, des cases à cocher ou des saisies de texte — à l'intérieur de votre personnalisé fenêtre d'informations.
Donc, fondamentalement, en cliquant sur n'importe quelle partie de l'infowindow déclenchera seulement "didTapWindowOfMarker"
et vous déplacez votre solution lorsque la carte se déplacer?
pouvez-vous s'il vous plaît poster la solution, je suis aux prises avec le même problème
OriginalL'auteur tony m
Swift 3.0 Solution
et faire de la sortie de ce point de vue(customInfoWindow) en même contrôleur qui a mapView.
J'ai eu l'idée de ce lien grâce à ce développeur Personnalisé et interactif googlemaps(SDK IOS) infowindow
OriginalL'auteur Sourabh Sharma
J'ai un UView et je suis l'ajout d'un délégué à la vue, de sorte qu'un UIButton appels d'un sélecteur. Pour la carte google, je ne fais rien quand je l'appelle
Cependant, j'ai mis ma infowindow (ma vue personnalisée) délégué à soi-même, et d'appeler toutes mes actions quand j'appuie sur le bouton qui est liée à la sélection.
OriginalL'auteur kevinl
Mise à JOUR:
Voici le code que j'utilise pour détecter appuyez sur les boutons ajouter à ma infoWindows. J'ai créer un personnalisé infoWindow avec 2 faux boutons (on pouvait les remplacer par des images parce qu'on ne va pas déclencher toute action) et j'ai ajouter une superposition transparente avec 2 vrais boutons sur la infoWindow. Ces boutons permettent de déclencher les actions.
Et j'utilise un peu de délégué méthodes ou KVC afin de déplacer la superposition lors de l'infoWindow est lui-même déplacé.
ANCIEN POST:
Ont un coup d'oeil à ce fil, et plus précisément au n ° 9, devrait être utile
https://code.google.com/p/gmaps-api-issues/issues/detail?id=4961
OriginalL'auteur Aurelien Porte
1)Créer un sous-vue dont vous voulez afficher dans l'infoWindow.
2)configurez le cadre de la sous-vue est égal à l'image de l'infoWindow vue.
OriginalL'auteur Dhananjay Patil