1

興味のあるポイント(POI)のリストがパッケージ化されて来ることで、オフラインで動作できる位置認識iPhoneアプリを作成することを考えています。アプリは、ユーザーの現在地を読み取り、ユーザーの現在地CoreLocationに近い順にPOIのリストを生成します。

このアプリケーションを軌道に乗せるには、2つの基本的な地理空間関数が必要です。1つ目は、ポイント(ユーザーの現在の場所)が特定の地理空間境界内にあるかどうかをテストする関数です。2つ目は、2つの緯度/経度のポイント間の距離を指定できる関数です。2番目の関数を使用して、POIのリストをユーザーの現在の場所の近くで並べ替えます。

この問題領域はよく理解されており、オープンソースのオプションがあることを理解しています。(私が知っている)主要な候補は、GEOSC ++ライブラリです。私がこれを使用すると想像する方法は、GEOSを静的ライブラリとしてコンパイルすることです(そして、three20ライブラリを含めるために行うように、プロジェクトの依存関係としてリンクします)。

私の質問は:

  1. 必要な2つの関数をアプリケーションに組み込むための最良の方法は何ですか。

  2. 質問1の最良の答えが、静的ライブラリとしてGEOSをコンパイルし、それを私のプロジェクトにリンクすることである場合、以前にこれを行ったことがある人は、いくつかのポインタを提供できますか?私はコンパイルや静的ライブラリの構築などの初心者です。GEOSをコンパイルしてプロジェクトに含める方法について、いくつかのサンプルコードまたはチュートリアルを簡単な使用例で見てみたいと思います。

4

2 に答える 2

3

わかりました。少し時間がかかりましたが、iPhone用の静的ライブラリまたはGEOS(シミュレータと実際のデバイスの両方でx86とARM)を適切に構築できると思います:libgeos.aおよびlibgeos_c.a:実装とそのAPI。

そこにビネアを入手できます(GEOSバージョン3.1.1の場合、これは最後のものではありません): http: //bit.ly/aTKsI6

(そこには他のバイナリがいくつかあり、残りはspatialite用です)

.shこの仕事は主に、スクリプトを介してクロスコンパイルが行われる方法を理解することによって達成されました。このブログは必見です: http: //robertcarlsen.net/2009/07/15/cross-compiling-for-iphone-dev-884

于 2010-03-25T11:03:24.723 に答える
1

ポイント間の距離については、CLLocationgetDistanceFrom:方法を参照してください。

地理空間境界の意味はわかりませんが、場所を定義する長方形がある場合は、それをに変換しCGRect、すべてのポイントの緯度と経度をそれぞれ90と180だけオフセットして、負の数を持たないで、CLLocationオブジェクトをCGPointsに変換してCGRectContainsPointから、場所がその長方形内にあるかどうかを判断するために使用します。

説明されている機能はすべて、標準のiPhoneSDKの一部です。

于 2009-11-23T11:56:01.723 に答える