Pergunta

Pelo que li, isso exige uma matemática complicada em que não sou boa. Então, estou perguntando aqui.

Alguém tem experiência em converter um mkmappoint ou cllocationcoordinate2d em um valor UTM? Eu encontrei este recurso (http://www.uwgb.edu/dutchs/usefuldata/utmformulas.htm) Mas a matemática é esmagadora.

Foi útil?

Solução

Você pode usar um LIB para fazer isso ou analisar o código de uma lib para entender o algoritmo e fazê -lo sozinho.

Este é um Lib C ++ que faz o trabalho: http://geographlib.sourceforge.net/html/

http://geographlib.sourceforge.net/html/classgeographlib_1_1utmups.html

Encontrei este site (http://home.hiwaay.net/~taylorc/toolbox/geography/geoutm.html). Se você olhar para o código-fonte, toda a conversão será feita usando o JavaScript, poderá dar uma olhada e tentar converter para OBJ-C.

Outras dicas

Recentemente, escrevi uma aula para isso e publiquei um projeto de amostra no Github

Exemplo de UtmConverter para iOS

A peça que você deseja é um arquivo chamado utmconverter.m. Possui métodos para converter de Lat/Long para UTM e Vice-Versa.

MKMapViewZoom Parece ter alguns métodos de classe que podem converter entre coordenadas de mapa plano (geométrico) e mapa curvo (geográfico), embora eu não as tenha testado. Alguém me dê um polegar para cima se isso realmente funcionar

//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

alguma documentação aqui

ATUALIZAR:

Isso é enlouquecedor, mas para fazer com que o código -fonte desta classe funcione com precisão, eu basicamente tive que extrair os métodos em meu próprio domínio essencialmente, depois remover as partes do código referenciando MERCATOR_OFFSET & mudança MERCATOR_RADIUS para o valor dos medidores do raio da Terra. Fiquei meio que ok, muito surpreso quando descobri que isso realmente funcionava.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top