2013-02-14 13 views
5

Vedo alcuni modi per farlo: modo migliore per creare la mappa dell'edificio personalizzati per iOS

1) Disegnare utilizzando OpenGL di programmazione.

2) Disegnare utilizzando QuartzCore e CoreAnimation a livello di programmazione.

3) Disegnare la mappa in AutoCad e quindi collegarla in qualche modo a iOS.

4) Disegnare la mappa utilizzando SVG.

I requisiti supportano il rilevamento del percorso e la navigazione GPS.

Per i primi 2 modi, penso che sia costoso in termini di prestazioni, ridisegnare tutti gli elementi durante il ridimensionamento; e non penso che in questo modo possa avere supporto per la navigazione GPS.

L'utilizzo delle mappe illustrate di AutoCad è difficile da capire per me come collegarlo ai grafici \ percorsi per il rilevamento dei percorsi.

I miei colleghi svilupperanno questa app sul Web utilizzando SVG. L'ho trovato - https://github.com/SVGKit/SVGKit, ma non ho ancora idea di come supporterà il path-finding e la navigazione.

Apprezzerei qualsiasi aiuto.

risposta

4

Generalmente ci sono due tipi di carta applicazione:

A) Essi mostrano una mappa, (con o senza una posizione utente) senza la necessità di calcolare un percorso, come un sistema di navigazione non (vedi punto B)

B) Applicazione che utilizza i vettori di una mappa e calcola qualcosa: ad es. Per trovare il percorso migliore. La connessione più breve, ad es. Un sistema di navigazione, ecc.

L'applicazione per A) di solito è meno complessa di quella di B), perché i vettori possono essere in qualche modo imprecisi, non hanno connessioni, hanno piccoli spazi vuoti, non hanno alcuna logica tra bordi, ecc.

1) Per visualizzare solo una mappa dell'edificio, è necessario solo un elenco di bordi. (Un fronte è una coppia di coordinate (x1, y1) - (x2, y2) .Ma come mai lo si ottiene.Per esempio MapInfo Professional formato mif/mid
O anche si potrebbe visualizzare un pdf che contiene la mappa del builing. Proprio con la vista PDF integrata, (anche con SVG ma più difficile)

Le cose diventano molto più complicate se non si tratta di una mappa relativa, ma anche di una mappa posizionata con un sistema di coordinate di riferimento, come la latitudine/longitudine (WGS84)
In questo caso si utilizzerà uno strumento (mapInfoProfessional, per importare file AutoCad DXF e si applicano 3 punti di riferimento misurati GPS nell'angolo della casa e convertito in sistema di coordinate LatLong WGS84.
Con iOS non puoi misurare quel 3 P Se non riesci a calcolare la media di una posizione, ios interrompe l'invio quando sei fermo in un angolo della casa. Potresti provare ad estrarre le posizioni da una foto di google earth satellitare se stai vivendo in una regione in cui le foto satellitari di Google hanno un'alta risoluzione. (Ma questo potrebbe violare le condizioni di licenza di quel fornitore di Foto Satellite (Argomento: dati derivati))

Finalmente ora hai un elenco di spigoli nel sistema di coordinate Lat Lon.

Per la visualizzazione Personalmente vorrei o 1) OpenGL) o 2) Quartz2D.

Ora il percorso che trova parte.

Probaly è necessaria una seconda "mappa" che definisca i possibili percorsi all'interno dell'edificio. Questa struttura deve essere un grafico di connessione (punti con vicini connessi). I giochi per computer fanno così. (Alcuni consentono persino di visualizzare quel percorso in modalità sviluppo)

Il percorso può essere disegnato, in un diverso livello della pianta del pavimento. Ma questo percorso ha requisiti più elevati: non sono ammessi spazi vuoti, tutti devono essere perfettamente connessi.

Chiama quel livello "Percorso" ed esportalo come proprio piano.
Ora utilizzare solo questo livello percorso e importare e creare un grafico di nodi con i vicini vicini.

Utilizzare Dijkstra Algo per cercare il percorso più breve.

+0

Grazie per la risposta dettagliata! Quindi, come ho capito, devo rendere AutoCad map, convertirlo usando mapInfoProfessional in qualcosa, che supporta il sistema di coordinate LatLong, e quindi disegnarlo usando OpenGL/Quartz2D? Non riesco ancora a capire come far interagire questa mappa con iOS, basta disegnarla in qualche modo? O qualsiasi componente specificato? E il sistema di coordinate LatLong deve essere applicato esattamente alla mappa AutoCad o alla mappa già disegnata in iOS? – Aft3rmath

+0

sì, basta disegnarlo in una vista, CGRectlineTo. la conversione della mappa in LAtLong può anche essere effettuata da te, utilizzando una Trasformazione di Helmert. quando si disegna la mappa è anche necessario riconvertire latLong alle coordinate dello schermo (utilizzando una proiezione del cilindro) – AlexWien

+0

Grazie mille! Ma per quanto riguarda il ridimensionamento? Devo creare mappe di risoluzioni diverse per ogni fase del ridimensionamento e quindi ridisegnare il frammento della mappa su scala, utilizzando un'altra mappa cad automatica della risoluzione? – Aft3rmath

Problemi correlati