2015-01-16 3 views
2

잠시 동안 해결할 수없는 문제가 있습니다.Google지도 SDK iOS - 확대시 위치가 변경되지 않도록지도

저는 앞에 GMSMapView와 함께 중앙에 imageView가 있습니다. 결과에서지도를 드래그하고 항상 가운데 핀을 사용할 수 있습니다. 그러나지도를 확대 할 때 문제가 발생합니다. 확대/축소에서지도 대상의 위치가 변경되고 my imageView가 다른 위치를 가리 킵니다.

확대/축소가 변경되면 감지 할 수 있지만 GMSMapView가 실제로 위치를 변경하지 않고 확대/축소를 강제로 할 수는 없습니다.

-(void) mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position 
{ 
    if (mZoomLevel != mapView.camera.zoom) 
    { 
     mZoomLevel = mapView.camera.zoom; 
    } 
} 

기본적으로 확대/축소를 수행하더라도 기본적으로 핀 중심에 놓고 싶습니다. GMSMarker를 사용해 보았지만 맵 센터를 따라갈 때 성능에 문제가 있습니다. 즉각적으로 처리하지는 않기 때문에 imageView를 사용하기로 결정했습니다.

주요 질문 : 줌을 수행하는 동안지도의 현재 위치를 고정하는 방법은 무엇입니까?

+0

좋아, 그래서 내가 실제로 잠금 및 스크롤을 중지지도를 강제 할 수 있음을 알아 냈다. GMSUISettings지도 속성에 도움이 될 'scrollGestures'및 'zoomGestures'플래그가 있습니다. 그러나 나는 또 다른 문제에 직면 해있다. imageView가 여전히 줌 (실제로는 bg의 맵)에서 위치를 변경하기 때문에 나는 imageView 대신 GMSMarker로 복귀해야합니다. 나는 마커와 imageView를 바꿀 수 있지만 끔찍한 것처럼 보입니다. GetTaxi iOS 앱의 효과를 얻으려고합니다. 모든 것이 매우 부드럽습니다. 그러나 여전히 행운이 없다. – quarezz

답변

6

Google은 google maps sdk 1.10.0으로이 문제를 해결했습니다. 3 스위프트

_mapView.settings.allowScrollGesturesDuringRotateOrZoom = NO; 
+0

정말 멋지다. 너무 좋지 않다면 그곳에 없었습니다. :) – quarezz

+0

false로 설정하면 내 이슈가 해결되었습니다. 이제 주소를 얻기 위해 대성공의 지오 코드 서비스를 호출하고 싶습니다. 호출을 줄이기 위해 역 지오 코드 svc를 호출하는 것이 더 좋습니다. 왜냐하면 idleAtCameraPosition 델리게이트는 확대 및 축소도 호출하기 때문입니다. –

3

글쎄,이 문제로 돌아간 지 10 일이 지난 후에 마침내 해결했습니다! 대답은 꽤 쉬웠습니다! 여기

몇 단계 : 2. GMSMapView의에 UIPanGestureRecognizer를 추가 GMSMapView의 위에 마커로 1. 추가 이미지 뷰 3. 그런 다음이 코드를 사용 (대리자를 설정하는 것을 잊지 마세요, 그것은 중요) :

- (void) didPan:(UIPanGestureRecognizer*) gestureRecognizer 
{ 
    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     _mapView.settings.scrollGestures = true; 
    } 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    if (gestureRecognizer.numberOfTouches > 1) 
    { 
     _mapView.settings.scrollGestures = false; 
    } 
    else 
    { 
     _mapView.settings.scrollGestures = true; 
    } 
    return true; 
} 
+0

아래의 대답은 SDK 업데이트에 대한 정답으로 간주되어야합니다. – novak

-1

:

이 솔루션은 단순히 GMSMapView를 구성 할 때이 줄을 추가하는 것입니다

mapView.settings.scrollGestures = false 
+5

답변을 설명하는 설명을 더 추가하십시오. – jjj

+0

@jjj 아래 답변에 대한 빠른 버전입니다. 실제로 도움이되는 내용은 없습니다. ¯ \ _ (ツ)) _/¯ – quarezz