문제

나는 도시를 묘사하는 원과 사각형이 많은 정적지도 이미지를 가지고 있습니다. 이미지를 스크롤 뷰 아래에서 하위 클래스에있는 ImageView에로드하여 맵에서 사용자 터치를 캡처하고 Zoom/Scroll을 캡처 할 수 있습니다. 내 도전 과제는 사용자가 도시를 위해이 서클/사각형 중 하나를 만질 때마다 도시가 어느 도시인지, 도시의 세부 사항을로드 할 때마다 라벨을 팝업하고 싶다는 것입니다. 나는 ImageView 맵을 기반으로 도시의 모든 상대적인 cgpoint를 사전으로 사전으로 전하시킬 수 있다고 생각했지만 "T 잘못된 방법.

지금까지 모든 것이 작동하고 있으며 터치의 CGPoint X 및 Y 좌표를 캡처 할 수 있습니다. 내가 가진 가장 큰 문제는 사용자 터치의 근접성을 사전에서 가질 수있는 개별 지점으로 결정하는 것입니다. 다시 말해 사전에 "보스턴 = nspoint : {235, 118};" 사용자가 정확히 터치를 반복하지 않고 해당 지점에 가까운 시점을 어떻게 알 수 있습니까? 사용자 터치가 기존 지점에 "가까운"지 확인하는 쉬운 방법이 있습니까? 내가 이것에 대해 올바른 방법으로 가고 있습니까?

머리 뒤쪽의 조언이나 때리기를 환영합니다.

고마워요, 마이크

도움이 되었습니까?

해결책

Uibittons를 사용하여 도시를 대표 할 수 있습니다. 그런 다음 표준 터치, 하이라이트 등의 노력을 덜 노력하면서 행동을 얻을 수 있습니다. 맵의 하위 뷰로 버튼을 추가하면 맵과 함께 스케일 및 스크롤이 발생합니다.

다른 팁

내가 올바르게 이해한다면, 사용자가 탭하는 지점이 도시로 표시되는 지점에 충분히 "가까운"지 알고 싶습니다.

탭이 더 가까워지기 전에 탭이 더 가까워지면서 임계 값을 설정해야합니다.

이렇게하면 직교 좌표 거리 SQRT ((x1-x2)^2 + (Y1-Y2)^2) 각 요소에 대해 배열에있는 각 요소 (x, 도시의 y 값)를 계산하고 결과를 저장하십시오. 다른 배열. 그런 다음 최소한의 결과를 가져옵니다. 그 결과의 지수는 상기 임계 값보다 적은 경우 탭에 가장 가까운 도시입니다.

당신은 an을 사용할 수 있습니다 R- 트리, 또는 현재 뷰의 각 보이는 지점에 대한 터치의 근접성을 계산할 수 있습니다. 근접성을 계산하려면 일반적으로 피타고라스 정리를 사용하지만이 경우 상대 크기 만 비교하기 때문에 제곱근을 건너 뛸 수 있습니다. 또한 50 픽셀로 2500에 제곱 된 경우 원거리 컷오프를 선언 할 수 있습니다. 따라서 결과를 거리와 기준점을 포함하는 객체에 넣고 물체를 NSMutablearRay에 넣고 컷오프 아래에 결과를 추가하지 않고 결과를 넣습니다. 최소 결과를 선택하십시오.

따라서 터치 한 포인트가 있다면 pT, 그런 다음 각 지점에 대해 pN, 당신은 다음을 계산합니다 :

d=(pT.x-pN.x)*(pT.x-pN.x) + (pT.y-pN.y)*(pT.y-pN.y); //d is the squared distance

요점 pN 최소값으로 d 가장 가까운 요점입니다 pT. 그리고 내가 말했듯이, 당신이 10 픽셀 내에서 만 터치를 원한다면, 당신은 그것을 테스트 할 수 있습니다. d <= 10*10;

20x20 정사각형 영역 내의 터치 테스트 방법은 두 점이 서로 20 픽셀 이내에있는 경우를 제외하고 가장 가까운 터치 포인트인지 알아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top