少し時間があったので、検索機能を改良してみた。
Wareko Mapの画面の左上にある検索欄は、最初のバージョンv1.0からずっと
Places search box (Google Maps Javascript API)
を使っている。
今まで使ってみた感じではこの検索機能はあまり性能が良くない感じ。
例えば、入力欄にコピペで
- 住所
- 郵便番号
- 緯度、経度
など貼り付けて、[Enter]を押しても反応が無い場合がある。
その時には、その文字列の後ろにスペースを一個入れてバックスペースで削除してから[Enter]を押すとうまく検索出来る。原因は分からない。
ちょっと気になっていたので、改良したいなあと思っていたのだが、先日、
プレイス検索 (Google Places API ウェブ サービス)
と言うのを見つけた。
- 周辺検索リクエスト
- テキスト検索リクエスト
- レーダー検索リクエスト
という三つの検索機能が使えるようだ。
上記のGoogleのサイトの説明を読んだだけだとそれらの違いが良く分からなかったのだが、実際に使ってみてある程度理解できた。
それぞれの検索機能の主な特徴を自分なりにまとめると、以下のようになる。
1. 周辺検索リクエスト
長方形や円形で範囲を指定して、その範囲内を検索する。
キーワード、タイプ(types)、名前(name)、ランク(rankby)などの条件が指定出来る。
タイプ(types)とは、[レストラン]、[ホテル]、[百貨店]などの業種のようなものか。複数指定可能。
名前(name)とは、その場所に登録されている名前なので、通常は会社名とか店舗名とか、そういう名前かな。
ランク(rankby)は、Googleが各種の情報を元にその場所にランク付けをしていて、検索結果がその値の高い順に表示されるらしい。
2. テキスト検索リクエスト
このテキスト検索は、上記の周辺検索と良く似ているが、こちらの場合は長方形や円形に範囲限定してもよいが、しなくても良い。その場合は、全世界から検索されるようだ。
また、このテキスト検索では必ずキーワードを指定する必要がある。
要するに、キーワード指定して単純に検索するだけなら、このテキスト検索がお勧めだ。
ランク(rankby)は、指定出来ない。
周辺検索、テキスト検索では、一回の検索で最大20件の詳細情報が取得出来る。
詳細情報とは、プレイス詳細 に説明があるが、要するにその検索結果(店舗など)の緯度経度、住所、電話番号、レビュー、営業時間、価格帯などの情報である。
一回検索すると、まず20件の結果が得られる。さらに検索結果が有る場合は、引き続き20件、さらに20件と、合計60件取得出来る。
一度に60件取得出来ない理由は、一度に沢山の検索リクエストが来るのを制限しているようだ。
3. レーダー検索リクエスト
上記の1,2の検索機能では、一回の検索で最大60件(20件x3回)の情報を取得出来る。
一方、レーダー検索では、一回の検索で200件の情報が取得出来る。
指定できる条件は、周辺検索とほぼ同じ。ただしランク(rankby)は指定出来ない。
しかしながらレーダー検索で得られる情報は、検索条件にヒットした位置情報のみで、詳細情報は、個別にプレイス詳細リクエストを発行して取得する必要がある。
なので、レーダー検索の用途としては、例えば、現在地を中心にその周囲にあるコンビニの場所を一覧したい場合などに実行すると、地図上に最大200店が●で表示されるので、そういう用途に向いているかな。
ということで、これら三種類の検索機能を追加したものが
Wareko Map v3.5
です。
検索機能を実装するだけなら、上記のGoogleのサイトなどにサンプルプログラムなどが掲載されているので割と簡単なのだが、それを使うユーザーインタフェースを作るのがちょっと大変だった。
とりあえず作ってみたが、あまり詳細な条件を指定して検索する人はいないかもしれない。
ということで、コメント、感想、問題報告などありましたら、コメントでお知らせ下さい。
コメント