53 votes

Fenêtre d'information personnalisée pour Google Maps

J'aimerais créer une fenêtre d'informations personnalisée pour Google Maps pour iOS, comme dans la photo ci-dessous. Est-il possible d'étendre GMSOverlay comme GMSMarker, GMSPolyline et GMSPolygon pour créer des graphiques personnalisés?

entrez la description de l'image ici

105voto

skarE Points 4070

Vous souhaitez utiliser l' markerInfoWindow délégué de la méthode et de définir également la infoWindowAnchor.

Lorsque vous créer un ensemble de marqueurs de l'ancre:

GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = MARKER_POSITION;
marker.infoWindowAnchor = CGPointMake(0.44f, 0.45f);
marker.icon = [UIImage imageNamed:@"CustomMarkerImageName"];

puis créer le délégué de la méthode.

- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker {
  InfoWindow *view =  [[[NSBundle mainBundle] loadNibNamed:@"InfoWindow" owner:self options:nil] objectAtIndex:0];
  view.name.text = @"Place Name";
  view.description.text = @"Place description";
  view.phone.text = @"123 456 789";
  view.placeImage.image = [UIImage imageNamed:@"customPlaceImage"];
  view.placeImage.transform = CGAffineTransformMakeRotation(-.08);
  return view;
}

Dans l'exemple ci-dessus, j'ai créé un xib enter image description here et je charge que xib et le retour de la vue. Vous pouvez toujours construire une UIView juste dans le code si vous voulais à la place.

11voto

Bryce Thomas Points 2200

Voir également la vidéo suivante que Google vient de publier:

http://www.youtube.com/watch?v=ILiBXYscsyY

3voto

iDev Points 245

Vous pouvez passer ce type de UIImage comme icône comme ci-dessous

 CLLocationCoordinate2D position = CLLocationCoordinate2DMake(latitude,longitude);
 GMSMarker *location = [GMSMarker markerWithPosition:position];
 location.title = @"Location Name";
 location.icon = [UIImage imageNamed:@"marker_icon.png"];
 location.map = mapView_;

Pour plus de détails, voir cette Documentation.

Si vous voulez ce type d'image après marqueur pressé que vous devez avoir deux type d'images d'un seul endroit.

1ère image icône de marque uniquement.

2ème image est marqueur de lieu détail.

marqueur icône de chargement lorsque mapView initialiser comme le code ci-dessus.

Et la Deuxième Image marqueur de lieu détail que vous avez à charge comme à l'intérieur de marqueur pressé delegate méthode à l'aide d' For-Loop et NSMutablearray en vérifiant marker.title savoir qui repère est pressé.

 - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker
 {

 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X