iOS: Как конвертировать Mkmappoint или ClllocationCoordinate2D в UTM?
-
26-09-2019 - |
Вопрос
От того, что я прочитал, это затрудняет усложняющую математику, в которой я не очень хорош. Итак, я спрашиваю здесь.
У кого-нибудь есть опыт преобразования Mkmappoint или ClllocationCoordinate2D на значение UTM? Я нашел этот ресурс (http://www.uwgb.edu/dutchs/usefardata/utmmormulas.htm.) Но математика подавляющая.
Решение
Вы можете использовать один lib, чтобы сделать это или проанализировать код одного lib, чтобы понять алгоритм и сделать это самостоятельно.
Это C ++ Lib, которая делает работу: http://geographiclib.sourceforge.net/html/
http://geographiclib.sourceforge.net/html/classgeographiclib_1_1utmups.html.
Я нашел этот сайт (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Если вы посмотрите на исходный код, все преобразование выполняется с помощью JavaScript, вы можете посмотреть на него и попытаться преобразовать в OBJ-C.
Другие советы
Я недавно написал класс для этого и опубликовал образец проекта на Github
Часть, которую вы хотите, это файл под названием UTMConverter.M. У него есть методы преобразования из LAT / LAND до UTM и VICE-VERSA.
MKMapViewZoom
Похоже, имеет некоторые методы классов, которые могут преобразовать между плоской картой (геометрической) и изогнутой картой (географическими) координатами, хотя я не проверил их. Кто-то дает мне большие пальцы, если это на самом деле работает
//convert from WGS84 (geographic coordinates) to UTM (geometric coordinates)
+ (double)longitudeToPixelSpaceX(double)pixelX
+ (double)latitudeToPixelSpaceY(double)pixelY
//convert from UTM to WGS84
+ (double)pixelSpaceXToLongitude(double)longitude
+ (double)pixelSpaceYToLatitude(double)latitude
Некоторая документация здесь
- Цель C: https://github.com/jdp-global/mkmapviewsoom/blob/master/mkmapview%2bzoomlevel.m.
- Для Rubymotion: http://rubydoc.info/gems/map-kit-wrapper/0.0.5/frames.
ОБНОВИТЬ:
Это безумно, но для того, чтобы получить исходный код этого класса, чтобы работать точно, я в основном пришлось по существу извлечь методы в свой собственный домен, а затем удалить части ссылки на код MERCATOR_OFFSET
& изменять MERCATOR_RADIUS
до счетчика радиуса Земли. Я был вроде, хорошо, очень удивлен, когда я обнаружил, что это на самом деле сработало.