2013-02-14 5 views
5

ich einige Möglichkeiten zu sehen, es zu tun: beste Art und Weise individuelle Gebäude der Karte erstellen für iOS

1) Zeichnen Sie OpenGL programmatisch verwenden.

2) Zeichnen Sie mit QuartzCore und CoreAnimation programmgesteuert.

3) Zeichnen Sie die Karte in AutoCad und verbinden Sie sie dann irgendwie mit iOS.

4) Karte mit SVG zeichnen.

Anforderungen unterstützen Pfadfindung und GPS-Navigation.

Für die ersten 2 Möglichkeiten denke ich, dass es in Bezug auf die Leistung Weg teuer ist, alle Elemente auf Skalierung neu zeichnen; und ich denke nicht, dass auf diese Weise GPS-Navigation unterstützt wird.

Die Verwendung von abgebildeten AutoCAD-Karten ist für mich schwer zu verstehen, wie man sie mit Graphen \ Pfaden für die Pfadfindung verbinden kann.

Meine Kollegen werden diese App im Web mit SVG entwickeln. Ich habe es gefunden - https://github.com/SVGKit/SVGKit, habe aber immer noch keine Ahnung, wie es Wegfindung und Navigation unterstützt.

Ich würde jede Hilfe zu schätzen wissen.

Antwort

4

Im Allgemeinen gibt es zwei Arten von Kartenanwendung:

A) Sie zeigen eine Karte, (mit oder ohne Benutzerposition), ohne dass ein Weg wie ein Navigationssystem zu berechnen ist (Punkt B sehen)

B) Anwendung, die die Vektoren einer Karte verwendet und etwas berechnet: zB um einen besten Pfad zu finden. Die kürzeste Verbindung, z. B. ein Navigationssystem, etc.

Anwendung für A) sind in der Regel weniger komplex als die von B), weil die Vektoren etwas inakulär sein können, keine Verbindungen haben, kleine Lücken haben, keine Logik zwischen den haben Kanten usw.

1) Um nur eine Gebäudekarte anzuzeigen, benötigen Sie nur eine Liste von Kanten. (Eine Kante ist ein Koordinatenpaar (x1, y1) - (x2, y2). Wie auch immer Sie das bekommen. ZB MapInfo Professional Format mif/mid.
Oder Sie könnten sogar eine pdf, die die Karte des Gebäudes enthält. Mit der integrierten PDF-Ansicht (auch mit SVG aber schwieriger)

Die Dinge werden viel komplizierter, wenn es keine relative Karte ist, sondern auch eine Karte, die mit einem Referenzkoordinatensystem wie dem Breitengrad positioniert ist/Längengrad (WGS84)
In diesem Fall würden Sie ein Tool (mapInfoProfessional verwenden, um AutoCad DXF-Dateien zu importieren, und 3 GPS-gemessene Bezugspunkte an der Ecke des Hauses anwenden und dieses in LatLong WGS84-Koordinatensystem konvertieren.
Mit ios kann man das 3 P nicht messen oints, weil man eine position nicht mitteln kann, hört ios auf zu senden, wenn man an einer ecke des hauses steht. Sie könnten versuchen, die Positionen von einem Google Earth Satellite Foto zu extrahieren, wenn Sie in einer Region leben, wo Google Sattelite Fotos eine hohe Auflösung haben. (Dies könnte jedoch die Lizenzbedingungen dieses Satellitenbildanbieters verletzen (Thema: abgeleitete Daten))

Endlich haben Sie nun eine Liste von Kanten im Lat Lon-Koordinatensystem.

Zum Anzeigen würde ich persönlich entweder mit 1) OpenGL) oder 2) Quartz2D machen.

Jetzt der Weg, der Teil findet.

Wahrscheinlich brauchen Sie eine zweite "Karte", die die möglichen Wege innerhalb des Gebäudes definiert. Diese Struktur muss ein Verbindungsgraph sein (Punkte mit verbundenen Nachbarn). Computerspiele machen es so. (Einige erlauben sogar, diesen Pfad im Entwicklungsmodus anzuzeigen.)

Der Pfad kann in einer anderen Ebene des Grundrisses gezeichnet werden. Aber dieser Pfad hat höhere Anforderungen: Keine Lücken sind erlaubt, alle müssen perfekt verbunden sein.

Rufen Sie den Layer "Path" auf und exportieren Sie ihn als eigenen Plan.
Verwenden Sie jetzt nur diesen Pfad-Layer und importieren Sie und erstellen Sie ein Diagramm der Knoten mit Connect-Nachbarn.

Verwenden Sie Dijkstra Algo, um nach dem kürzesten Pfad zu suchen.

+0

Danke für detaillierte Antwort! Also, wie ich verstanden habe, muss ich AutoCAD-Karte machen, konvertieren Sie es mit MapInfoProfessional in etwas, das LatLong-Koordinatensystem unterstützt, und dann mit OpenGL/Quartz2D zeichnen? Ich kann immer noch nicht verstehen, wie diese Karte mit iOS interagieren kann. Oder eine bestimmte Komponente? Und das LatLong-Koordinatensystem muss auf AutoCAD-Karte genau angewendet werden, oder auf bereits gezeichnete Karte in iOS? – Aft3rmath

+0

ja, zeichne es einfach in einer Ansicht, CGRectlineTo. Die Konvertierung der Karte in LAtLong kann auch von Ihnen mit einer Helmert Transformation durchgeführt werden. Wenn Sie die Karte zeichnen, müssen Sie auch zurück auf Bildschirmkoordinaten umrechnen (mit einer Zylinderprojektion) – AlexWien

+0

Vielen Dank! Aber was ist mit Skalierung? Soll ich für jeden Schritt der Skalierung verschiedene Auflösungs-Maps erstellen und dann das Map-Fragment im Maßstab neu zeichnen, indem ich eine andere Auflösung-Auto-Cad-Map verwende? – Aft3rmath

Verwandte Themen