2013-08-28 3 views
2

지도 위에 이미지가 있고 Google지도에서 직선 및 회전 동작을 사용하고 싶습니다.iOS의 Google지도 SDK에서 마커 애니메이션 처리

GMS에서 어떻게 할 수 있습니까? 도와주세요.

당신은 마커로 이미지를 추가 한 다음 CoreAnimation

이 문서를 참조하여 일부 애니메이션을 추가하는 마커의 레이어 속성을 사용할 수

+0

http://stackoverflow.com/questions/40543095/bounce-animation-on-google-map-marker-in-ios-objective-c/41764821#41764821 iOS에서 Google 마커 애니메이션 적용 – Dhiru

답변

2
+0

나는 알고 있습니다. . GMSMarker에는 애니메이션을 적용 할 수있는 레이어 속성이 있습니다. 난 그냥 그것을 사용하여 마커 애니메이션. 다음 문서를 참조하십시오. https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_map_layer – kmdupr33

+0

죄송합니다. 그들이 그것을 추가했다는 것을 깨닫지 못했습니다. 우리는 여전히 아주 오래된 버전입니다. –

+0

전혀 문제가 없습니다. – kmdupr33

0
사실

나는 다음과 같은 코드를 사용하여 문제를 해결하고 GMSMarker 메소드 setPosition :. 다음 코드는 이미지를 회전하고 setPosition을 사용하여 마커/이미지를 임의의 위치에 배치 할 수 있습니다. 둘 모두의 조합은 필요한 선형 및 회전 동작을 제공합니다.

- (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; 
} 
+0

코드를 시도했지만 마커 아이콘이 축소 된 것처럼 보입니다. 이 문제를 해결하는 방법을 알고 있습니까? –

+0

@ RahulVyas 이미지가 정사각형이 아닌 경우가 될 수 있습니다. '0.5'배율을 변경해보십시오. – khushalbokadey

+0

다른 것을 시도해 보았습니다. 우리가 uber처럼 움직이는 방향으로 차를 부드럽게 회전시킬 수있는 방법을 알고 있습니까? 내 서버에서 표제 값을 업데이트 중입니다. –

0

쉬운 과정입니다.

+(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; 
    } 
} 

그런 다음 새로운 제목에 당신의 마커 회전 : 먼저 바로이 기능을 사용하여 제목 얻을 수있는 마커를 회전 지금

YOUR_MARKER.rotation = CALCULATED_HEADING - 180; 

을, 마지막 단계가 원활 드라이버

에게 애니메이션입니다
[CATransaction begin]; 
[CATransaction setAnimationDuration:3.1]; 
[YOUR_MARKER setPosition:NEW_LOCATION_COORDINATES]; 
[CATransaction commit];