5

私はそれを行ういくつかの方法を見ます:

1) プログラムで OpenGL を使用して描画します。

2) プログラムで QuartzCore と CoreAnimation を使用して描画します。

3) AutoCad でマップを描画し、iOS に接続します。

4) SVG を使用してマップを描画します。

要件は、パスファインディングと GPS ナビゲーションをサポートすることです。

最初の 2 つの方法では、パフォーマンスの面でコストがかかると思います。スケーリング時にすべての要素を再描画します。そして、この道が GPS ナビゲーションをサポートしているとは思えません。

AutoCad の写真付きマップを使用することは、経路探索のためにグラフ\パスと接続する方法を理解するのが難しいです。

私の同僚は、SVG を使用して Web 上でこのアプリを開発します。私はそれを見つけました - https://github.com/SVGKit/SVGKit、しかしそれが経路探索とナビゲーションをどのようにサポートするかまだわかりません。

助けていただければ幸いです。

4

1 に答える 1

4

一般に、マップ アプリケーションには次の 2 つのタイプがあります。

A)ナビゲーションシステムのように経路を計算する必要なく、(ユーザーの位置の有無にかかわらず)地図を表示します(ポイントBを参照)

B) マップのベクトルを使用して何かを計算するアプリケーション: たとえば、最適なパスを見つけるため。最短の接続、例えばナビゲーションシステムなど

A) のアプリケーションは通常、B) のアプリケーションほど複雑ではありません。これは、ベクトルが多少不正確である、接続がない、小さなギャップがある、エッジ間にロジックがないなどの場合があるためです。

1) 建物の地図のみを表示するには、エッジのリストのみが必要です。(エッジは座標 (x1,y1) - (x2,y2) のペアです。どのように取得しますか。たとえば、MapInfo Professional 形式の mif/mid。
または、建物の地図を含む pdf を表示することもできます。組み込みの PDF ビュー (これも SVG を使用しますが、より困難です)。

相対マップではなく、緯度/経度 (WGS84) などの参照座標系で配置されたマップの場合、事態はさらに複雑になります。
その場合、ツール (mapInfoProfessional) を使用して AutoCad DXF ファイルをインポートし、GPS で測定された 3 つの参照ポイントを家の隅に適用し、それを LatLong WGS84 座標系に変換します。iOS では、
その 3 つのポイントを測定できません。位置を平均化することはできません.家の隅に静止していると、ios は送信を停止します.Google 衛星写真の解像度が高い地域に住んでいる場合は、Google Earth 衛星写真から位置を抽出することができます.(ただし、これは、その衛星写真プロバイダーのライセンス条件に違反する可能性があります (トピック: 派生データ))

最後に、Lat Lon 座標系のエッジのリストができました。

表示については、個人的には 1) OpenGL) または 2) Quartz2D のいずれかを使用します。

今度はパス検索の部分です。

おそらく、建物内の可能なパスを定義する 2 番目の「マップ」が必要です。この構造は、接続グラフ (接続された隣接点を持つポイント) でなければなりません。コンピュータゲームはそのようにします。(開発者モードでそのパスを表示できるものもあります)

パスは、フロア プランの別のレイヤーに描画できます。しかし、このパスにはより高い要件があります。ギャップは許されず、すべてが完全に接続されている必要があります。

そのレイヤーを「パス」と呼び、独自のプランとしてエクスポートします。
ここで、このパス レイヤーのみを使用してインポートし、隣接ノードを含むノードのグラフを作成します。

Dijkstra Algo を使用して最短経路を検索します。

于 2013-02-14T21:01:06.153 に答える