3

iOS用の位置情報アプリを構築しています。現在、ローカル ビジネス (ピザ、ガソリン スタンド、銀行など) を検索するために使用できる検索バーがあります。検索バーのテキストはパラメーターとして URL に追加され、Yahoo Local API に供給されます。同じ検索バーを使用して特定のアドレスも検索したいのですが、それは API の機能ではありません。私は次のいずれかをしなければならないと考えています:

A) 広範なビジネス検索と特定の場所の検索を区別できる機能を構築します。ビジネス クエリを API に送信し、アドレス検索を CLGeocoder に送信します。

B) より用途の広い API を見つける。

C) まだ考えていないことをする。

別の検索フィールドを追加して住所検索に使用することもできますが、同じ検索バーから実行できるかどうか疑問に思っています。誰かがアドバイスを提供したり、正しい方向に私を向けたりすることができれば、私はそれを感謝します. ありがとう。

4

2 に答える 2

0

住所や POI は非常に自由な形式の文字列であるため、特に人間が生成した文字列の場合は、おそらく A を実行するのに苦労するでしょう。ビジネスや住所を検索するために、ユーザーが切り替えることができる何らかのスイッチを追加することをお勧めします。

B については、必要に応じてGoogle マップ APIを参照してください。これは、入力パラメーターに関してかなり用途が広いようです。

于 2012-04-10T15:12:48.160 に答える
0

興味深い質問に+1。これは間違いなくプログラミング設計の問題ですが、ほぼ UX の問題でもあります。

ひとつのフィールドですべてができると思います。私は住所を解析して処理するSmartyStreetsで働いています。あなたの質問に関連して、私が経験から学んだいくつかのことを次に示します。

  • アドレスの解析や特定に正規表現を使用しないでください。複雑すぎます。マテジが言ったように、アドレスにはさまざまな形式があります。「フリーフォーム文字列」は何でもかまいません。誘惑は正規表現を使用することですが、よりスマートな方法があります。
  • 少なくともその TOS によると、探している値と結果を実際に提供する場所/住所 API はほとんどありません。たとえば、Google、Yahoo!、およびその他のサービスでは、マップを表示する必要があり、自動クエリを許可していません (たとえば、ユーザーが積極的にリクエストを開始することはありません)。
  • ほとんどの API はアドレスの概算のみを実行し、アドレスの検証は実行しません。したがって、得られる結果はせいぜい推測です。Google は推測に長けていますが、正当に見える結果が実際には正しくない結果を返す場合があります。私はこれをたくさん見てきましたが、私は噛まれました。Geolocation/geocoding API には適切な場所がありますが、制限もあります。

たとえば、ユーザーがそのテキスト フィールドに POI または住所を入力します。それがどちらなのか、それとも両方なのかはわかりません。知っていた場合、その POI または住所は存在しますか? 両方を同時に実行する (安価な) API を私は知りません。私が見たエンタープライズ レベルの API はありますが、おそらく多額の費用がかかりすぎるでしょう。これが私が試すより簡単なアプローチです。

  1. アドレスを確認する CASS 認定サービスを検索します。SmartyStreets のLiveAddress API (ホームページの別のデモ) は、そのようなサービスの 1 つです (安価で、少量の使用では無料です)。API は単一行のアドレスを直接解析しませんが、このアルゴリズムを使用するのは非常に簡単です(実際の例はこちら)。Javascript のように JSONP をいじる必要がないため、Objective C ではさらに簡単です。 .

  2. LiveAddress または同等のサービス (調査を行うことをお勧めします。さらに質問がある場合はお知らせください。喜んでお手伝いします) が結果を返した場合、文字列は住所でした。CASS 認定サービスの中には、偽のアドレスや推測を返すものもあることに注意してください。この 2 つを区別することは困難/不可能です。LiveAddress は有効なアドレスのみを返します。そのため、LiveAddress が結果 (通常は上記のアルゴリズムを使用した最初の結果) を返す場合、文字列は間違いなく住所、または POI の後に住所が続きます。(もちろん、LiveAddress は各住所をジオコーディングします。)

  3. 結果が返されなかった場合は、POI/お店の名前です。アプリが Google または Yahoo の TOS に準拠している場合は、それらの API にクエリを実行します。これらの API は、そのようなものでより一般的な一致を推測して見つけるのが得意だからです。

別のオプションとして、最初に Maps API にクエリを実行し、返されたアドレス (存在する場合) を LiveAddress 経由で送信して、そのアドレスが存在することを確認し、詳細を確認することもできます。

それがあなたを正しい方向に向けることを願っています(しゃれは意図されていません)。何か説明が必要な場合や、住所に関するその他の質問がある場合はお知らせください。

于 2012-04-10T17:32:07.910 に答える