Chciałem dodać znacznik na mapie Google, który będzie animowany do wskazanego bieżącego użytkownika. Nie udało mi się uzyskać dokładnej animacji odskoku, jak powyższy link, na alternatywny sposób zaznaczania znacznika zrobiłem przy użyciu animacji skali.
w ten sposób ...
Aby uzyskać animację w ten sposób. lubię tego
GMSMarker *markerUser;
NSTimer *timer;
int imageScale;
Dodaj znacznik mapa
imageScale=15;
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(Userlat, Userlng);
markerUser = [GMSMarker markerWithPosition:position];
markerUser.title = @"You are here";
markerUser.icon=[self image:[UIImage imageNamed:@"marker_user.png"] scaledToSize:CGSizeMake(25.0f,40.0f)]; // Initial Marker Size
markerUser.appearAnimation = kGMSMarkerAnimationPop;
markerUser.infoWindowAnchor = CGPointMake(0.44f, 0.30f);
markerUser.map = mapView_;
start timera gdy znacznik jest dodawany na mapie, a następnie zmienić ikonę znacznika o różnej wielkości.
timer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:YES];
na każde 0,1 sekundy tragetMethod zostanie zwolniony, tutaj można skala obraz ikona i przypisanie do markera ikonę
-(void)targetMethod:(NSTimer *)timer {
if (imageScale<30) {
markerUser.icon=[self image:[UIImage imageNamed:@"marker_user.png"] scaledToSize:CGSizeMake(imageScale,imageScale*1.5)];
imageScale+=1;
}
else{
imageScale=15;
markerUser.icon=[self image:[UIImage imageNamed:@"marker_user.png"] scaledToSize:CGSizeMake(imageScale,imageScale*1.5)];
}
}
i tutaj jest metoda że będzie skalaswójUIImage
- (UIImage *)image:(UIImage*)originalImage scaledToSize:(CGSize)size
{
//avoid redundant drawing
if (CGSizeEqualToSize(originalImage.size, size))
{
return originalImage;
}
//create drawing context
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f);
//draw
[originalImage drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)];
//capture resultant image
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//return image
return image;
}
Może to rozwiązać problem facetów szukających takiej animacji.