2014-01-13 2 views
0

1) MKOverlayView에서 MKMapView를 사용하여 사용자 정의 이미지 (예 : 너비 = 350cm, 높이 = 230cm)를 표시하고 있습니다.MKMapView 어떻게 위도 위도에서 cm로 변환 하시겠습니까?

2) 이미지의 중심은 경도 = 0 위도 = 0 지금 내가 = 60.749995 위도 = 56.091651

이제 경도에 MKPointAnnotation 배치) 전 세계

4를 커버 I 이 점 (경도, 위도)을 x, y (cm)로 다시 변환하고 싶습니다.
이미지 상단에 주석이있는 서버에서 JPG를 만들 수 있습니다.

그래서 어떻게 x, y 값을 계산합니까?

고맙습니다 크레이그 같은

그래서 뭔가 : 당신은 정말 cm 취급하지 않는

CLLocationCoordinate2D coordinateOrigin = CLLocationCoordinate2DMake(90, -180); 
CLLocationCoordinate2D coordinateMax = CLLocationCoordinate2DMake(-90, 180); 


MKMapPoint maxMap=MKMapPointForCoordinate(coordinateMax); 
MKMapPoint minMap=MKMapPointForCoordinate(coordinateOrigin); 

double width = maxMap.x-minMap.x; 
double height = maxMap.y-minMap.y; 

MKMapPoint p = MKMapPointForCoordinate(wanted_coord);//wanted_coord is the one needed 
double pixel_x=p.x/width; 
double pixel_y=p.y/height; 

답변

1

1), 당신은 픽셀을 처리하고 있습니다. 이미지는 각 방향으로 일정한 픽셀 수를 갖습니다. 물리적 측정 값은 화면/프린터의 픽셀 크기에 따라 다릅니다.

2) 위도가 긴 픽셀로 변환하려면 MKMapPointForCoordinate 함수를 통해 MKMapPoints를 사용하십시오. 이렇게하면 x/y 좌표가 주어지며 사용자 지정 이미지에 맞게 값을 조정해야하므로 MKMapPoint에서 다루는 항목을 찾아야합니다. 예를 들어 이미지가 전 세계를 커버한다면 MKCoordinateForMapPoint에 (-180, -90)을 사용하고 최대 값에 (180,90)을 사용하여 MKMapPoint의 최소값을 찾을 수 있습니다. 이제 MKMapPoint의 x와 y에 대한 최대/최소값을 갖게됩니다. 이미지의 최대/최소값을 알 수 있으므로 하나에서 다른 값으로 확장하는 것이 쉽습니다.

+0

위의 편집을 참조하십시오. – jack

+0

거의. 마지막 두 줄은'pixel_x = (p.x/width) * image_width ''이어야합니다. 또한 이미지가 실제로 coordinateOrigin에서 coordinateMax로 확장되는지 확인해야합니다. 또한 원점이 다른 경우 (예 : 0,0이지도의 가운데이지만 이미지의 왼쪽 하단에있는 경우) 너비 또는 높이의 절반만큼 픽셀을 오프셋해야합니다. – Craig

+0

오른쪽! 스택 오버플로에서 다른 답변을 보았습니다. 그들은 많은 도움을주었습니다. – jack

관련 문제