J'ai une image sur une carte et je veux lui donner un mouvement linéaire et de rotation sur les cartes google.Animer le marqueur dans Google Maps SDK dans iOS
Comment puis-je le faire dans GMS? Aidez-moi, s'il vous plaît.
J'ai une image sur une carte et je veux lui donner un mouvement linéaire et de rotation sur les cartes google.Animer le marqueur dans Google Maps SDK dans iOS
Comment puis-je le faire dans GMS? Aidez-moi, s'il vous plaît.
Vous pouvez ajouter l'image comme un marqueur, puis utiliser la propriété de la couche de ce marqueur pour ajouter des animations en utilisant CoreAnimation
Voir les docs: developers.google.com/maps/documentation/ios/reference/
Je suis conscient de cela . Il y a une propriété de calque sur GMSMarker qui vous permet de l'animer. J'ai juste animé un marqueur en l'utilisant. Voir les documents: https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_map_layer – kmdupr33
DÉSOLÉ! Je ne savais pas qu'ils ont ajouté que - nous sommes toujours sur une très ancienne version –
Aucun problème du tout. – kmdupr33
En fait, je résolu le problème en utilisant le code suivant et Méthode GMSMarker setPosition:. Le code suivant fournit une rotation aux images et en utilisant setPosition: nous pouvons placer le marqueur/image n'importe où. La combinaison des deux donne le mouvement linéaire et de rotation requis.
- (UIImage *)imageRotatedByDegrees:(CGFloat)degrees image: (UIImage*) image
{
CGSize size = image.size;;
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0.5f * size.width, 0.5f * size.height) ;
CGContextRotateCTM (context, DegreesToRadians(degrees));
[ image drawInRect:(CGRect){ { -size.width * 0.5f, -size.height * 0.5f }, size } ] ;
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
J'ai essayé votre code mais mon icône de marqueur semble rétrécie. Avez-vous une idée de comment résoudre ce problème? –
@RahulVyas Cela pourrait être le cas si votre image n'est pas carrée. Essayez de changer le multiplicateur '0.5'. – khushalbokadey
Essayé une autre chose qui a fonctionné. Savez-vous comment nous pouvons faire tourner la voiture en douceur dans la direction de déplacement comme uber? Je suis en train de mettre à jour les valeurs d'en-tête sur mon serveur. –
C'est un processus facile. Tout d'abord tourner le marqueur pour obtenir la bonne position en utilisant cette fonction:
+(float)getBearing:(CLLocationCoordinate2D)locations1 andSecond:(CLLocationCoordinate2D)locattion2{
float fLat = degreesToRadians(locations1.latitude);
float fLng = degreesToRadians(locations1.longitude);
float tLat = degreesToRadians(locattion2.latitude);
float tLng = degreesToRadians(locattion2.longitude);
float degree = radiansToDegrees(atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng)));
if (degree >= 0) {
return degree;
} else {
return 360+degree;
}
}
Ensuite, faites pivoter votre marqueur à la nouvelle rubrique:
YOUR_MARKER.rotation = CALCULATED_HEADING - 180;
Maintenant, l'étape finale consiste à animer votre pilote en douceur
[CATransaction begin];
[CATransaction setAnimationDuration:3.1];
[YOUR_MARKER setPosition:NEW_LOCATION_COORDINATES];
[CATransaction commit];
http://stackoverflow.com/questions/40543095/bounce-animation-on-google-map-marker-in-ios-objective-c/41764821#41764821 animer google marker dans iOS – Dhiru