MKMapView Как конвертировать из долготы широты обратно в см?

1) Я использую MKMapView для отображения собственного изображения (например, ширина =350 см, высота =230 см) в MKOverlayView.

2) Центр изображения теперь находится на долготе = 0 и широте = 0 и охватывает весь мир

4) Я размещаю аннотацию MKPoint на долготе = 60.749995 и широте =56.091651

Теперь я хочу преобразовать эту точку (долгота, широта) обратно в x,y в сантиметрах.
Так что я могу создать JPG на сервере с аннотацией в верхней части изображения.

Так как мне рассчитать значения x,y?

Спасибо Крейг

так что-то вроде:

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) Вы не имеете дело с cm, вы имеете дело с пикселями. Изображение имеет определенное количество пикселей в каждом направлении, физическое измерение см зависит от того, насколько велики пиксели вашего экрана / принтера.

2) для преобразования из длинного в пиксель используйте MKMapPoints через функцию MKMapPointForCoordinate. Это даст вам координату ось / у, и вам нужно будет масштабировать эти значения, чтобы они соответствовали вашему пользовательскому изображению, поэтому вам нужно выяснить, какие MKMapPoints оно охватывает. Например, если ваше изображение охватывает весь мир, вы можете найти минимальные значения для MKMapPoint, используя MKCoordinateForMapPoint с (-180,-90) и максимальными значениями с (180,90). Теперь у вас будет максимум / мин для x и y в MKMapPoint, вы знаете максимум / мин для вашего изображения, так что легко масштабировать от одного к другому.

Другие вопросы по тегам