Comment définir des marqueurs d'annotation personnalisés (anneaux animés autour d'un point) sur GMSMapView

En utilisant Google maps iOS SDK j'ai mis en place un mapView en ce que j'ai créé des marqueurs comme suit

// Creates a marker in the center of the map. GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.icon = [UIImage imageNamed:@"point1.png"]; marker.map = mapView_; 

Mais j'ai besoin d'afficher des images animées à savoir une séquence d'images à afficher, des anneaux animés autour d'un point, à la place de l'original GMSMarker

séquence d'images sont point1.png point2.png point3.png point4.png point5.png

Quelqu'un peut-il m'aider à atteindre ce

dans

 - (RMMapLayer *)mapView:(RMMapView *)mpView layerForAnnotation:(RMAnnotation *)annotation { UIImageView *pulseRingImg = [[UIImageView alloc] initWithFrame: CGRectMake(-30, -30, 78, 78)]; pulseRingImg.image = [UIImage imageNamed:@"PulseRing.png"]; pulseRingImg.userInteractionEnabled = NO; CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.scale.xy"]; theAnimation.duration=2.0; theAnimation.repeatCount=HUGE_VALF; theAnimation.autoreverses=NO; pulseRingImg.alpha=0; theAnimation.fromValue=[NSNumber numberWithFloat:0.0]; theAnimation.toValue=[NSNumber numberWithFloat:1.0]; pulseRingImg.alpha = 1; [pulseRingImg.layer addAnimation:theAnimation forKey:@"pulse"]; pulseRingImg.userInteractionEnabled = NO; [mapView addSubview:pulseRingImg]; [marker addSublayer:pulseRingImg.layer]; return marker; } 

PulseRing.png dans [UIImage imageNamed:@"PulseRing.png"] est

PulseRing.png

Obtenir une reference de:

ios – comment faire une animation native "effet Pulse" sur un UIButton

 CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"opacity"]; theAnimation.duration=1.0; theAnimation.repeatCount=HUGE_VALF; theAnimation.autoreverses=YES; theAnimation.fromValue=[NSNumber numberWithFloat:1.0]; theAnimation.toValue=[NSNumber numberWithFloat:0.0]; [myButton.layer addAnimation:theAnimation forKey:@"animateOpacity"]; 

A partir de google map sdk / il apparaît en ce moment v1.9 les seules animations supscopes dans l'utilisation d'images encadrées. Si vous utilisez mapkit -> vous pouvez simplement utiliser https://github.com/TransitApp/SVPulsingAnnotationView

De google's sdk -> échantillon d'ios

AnimatedCurrentLocationViewController.m

  NSMutableArray *frames = [NSMutableArray array]; for (int i =0; i<146; i++) { NSSsortingng *img = [NSSsortingng ssortingngWithFormat:@"pulse-%d",i]; [frames addObject:[UIImage imageNamed:img]]; } marker.icon = [UIImage animatedImageWithImages:frames duration:3]; 

Sur ma twig de FlipBook https://github.com/johndpope/Flipbook j'ai rendu les animations d'impulsion dans la rétine à un tas d'images png transparentes. Il est peut-être possible de réduire davantage ces tailles de files dans Photoshop. Certes, cela n'est pas idéal et entraînera un gonflement de la taille de votre file binary mais est passable.

Avez-vous essayé cela? https://github.com/shu223/Pulsator

Lancez et ajoutez à la couche de votre vue, puis appelez start!

 let pulsator = Pulsator() view.layer.addSublayer(pulsator) pulsator.start() 

Pour SWIFT 3:

Vous pouvez utiliser UIImage.animatedImage pour l'icône de votre marqueur, comme ceci:

  1. Créer un tableau de UIImage avec les différentes images

     let image1 = UIImage(named: "marker-image-1") let image2 = UIImage(named: "marker-image-2") let image3 = UIImage(named: "marker-image-3") let imagesArray = [image1,image2,image3] 
  2. Définissez l'icône de votre marqueur:

     marker.icon = UIImage.animatedImage(with: imagesArray as! [UIImage], duration: 1.2) marker.map = mapView 
  3. Vous pouvez changer la durée de l'animation

  4. Lancez votre application, vous verrez le marqueur animé avec les différentes images

Vous pouvez personnaliser votre marqueur en changeant la propriété de l'icône de marqueur.

Par exemple: london.icon = [UIImage imageNamed: @ "house"]; vous pouvez donner votre propre image ou une image éditée à cet endroit.

si vous souhaitez personnaliser l'infowindow qui sera affiché après avoir cliqué sur un marqueur.

référer ce lien

https://developers.google.com/live/shows/864758637