2011-12-09 3 views
0

map을 다음 감안할 때특정 터치 영역을 얻는 방법? 내가 아이폰 개발에 새로운 오전

. "웨스턴 오스트레일리아"와 같은 특정 파트를 선택할 때마다 터치 이벤트를 발생시키고 싶습니다. 그러나 그 특정 영역은 터치 영역을 언급하기 위해 정사각형이나 원이 아닙니다. 경계는 순서가 맞지 않습니다. 터치 이벤트는 어떻게받을 수 있습니까?

제발 나에게 가이드를 주거나 그 부분에 대한 작업 방법을 알려주십시오.

답변

3

링크 된지도에서 각 영역은 정점의 배열로 표시되는 다각형으로 정의됩니다. (만약 당신이 이것을 보지 못한다면, HTML 소스를 살펴보면 알게 될 것입니다.)이 방법으로 설명 된 폴리곤 내부에 포인트가 있는지를 결정할 수있는 알고리즘에 관해 많은 논의를 인터넷에서 찾을 수 있습니다. Here is one discussion that may be worth looking at, 그리고 그 길이로 낙담하기 전에 (매우 철저합니다.) The "Crossing Count" Algorithm 섹션을보십시오. 내가 본 다른 사람들과 비교하면 꽤 간단한 방법입니다. 선이 교차하는지 확인하고 다각형의 가장자리가 광선과 교차하는지 계산합니다.

내부에있는 것을 찾을 때까지 모든 다각형에 대해 터치 된 점을 확인해야합니다. 가치가있는 한가지 방법은 터치 포인트가 바운딩 박스 안에 있는지 먼저 확인하고 각 폴리곤 정점 배열의 최소 x, 최대 x, 최소 y 및 최대 y 값으로 정의합니다. 테두리 상자 안에 있지 않으면 다각형 안에 있지 않습니다.

터치 이벤트와 위치를 감지하는 한 화면에서 터치가 발생한 위치를 확인하는 방법을 알려주는 look at my answer to this question입니다 (touch : locationInView 사용).

이미지를 확대/축소하려는 경우 잘 모르겠지만이 방법을 사용하면 문제를 해결할 수 있습니다. 이 응답이 도움이되지 않으면 할 일에 대해 더 많은 정보를 제공 할 수 있습니까?

+0

+1 교차 개수 계산 알고리즘을 설명하는 데 유용합니다. – Till

0

여기에는 몇 가지 옵션이 있지만 구현 방법은 하나만 있습니다.

우선 UIButton과 같은 일반 컨트롤로는이 작업을 수행 할 수 없으며 직접 터치 이벤트를 처리해야합니다.

-1 컬러 영역; 지도가 색상으로 표시되고 클릭 할 수있는 모든 지역의 색상이 다르게 표시됩니다.

그럴 경우 터치 한 지점 아래 픽셀의 색상을 확인하면됩니다. 이 같은 것을 example 내에서 처리합니다.

-2 맞춤 터치 맵; 기하학적 인 객체의지도, 이상적인 삼각형.

삼각형으로 구성된 오버레이 맵을 만들 수 있습니다. 크기가 다를 수 있습니다. 지도상의 모든 삼각형은 한 지역에 연결됩니다. 사용자가지도를 터치 할 때마다 충돌 감지가 실행됩니다. 간단한 2D 점 대 다각형 충돌에 대한 자세한 내용은 this article at topcoder을 확인하십시오.

0

@ 짐 (Jim)은 일반적인 휴대용 알고리즘에 대한 훌륭한 조언을 제공합니다. 아이폰을 사용하기 때문에지도 정보를 UIBezierPath 개체로 변환하는 것이 편리 할 수 ​​있습니다. 이러한 종류의 경로 객체를 만드는 방법에 대한 자세한 내용은 Drawing and Printing Guide을 참조하십시오. 그런 다음 [UIBezierPath containsPoint:]을 사용하여 적중 테스트를 수행 할 수 있습니다. 경로 개체를 사용하면 웹 페이지와 동일한 효과를 원할 경우 강조 표시를 수행하는 것이 편리합니다.

관련 문제