2008-04-05

住所に空白を含むとき GClientGeocoder の結果が不安定になる謎とその仮対処

The geo microformat 生成ツールを公開しました
住所を入力したときは、GoogleMaps API のジオコーダを使って、住所から緯度経度を検索して、その結果から HTML を生成します。
先週公開した The geo microformat 生成ツール ですが、空白文字を含む住所で検索したとき、期待どおり Google マップが移動してくれないことがありました。

"新宿区 歌舞伎町" という同じ住所で検索しているにも関わらず、移動したりしなかったりします。ですが、"新宿区歌舞伎町" のように空白なしの住所にすると、毎回ちゃんと移動します。なんでだろう。謎ですね。

それなりの原因が分からないのが気持ち悪いですが、Google Maps API のジオコーダを解析することもできないので、

住所を指定して GClientGeocoder を実行している部分を、
geocoder.getLatLng(c, function(point) {
if (point)
map.panTo(point);
});
次のように、住所の文字列から空白(全角を含む)を除去してから、GClientGeocoder を実行するように仮対処しました。
geocoder.getLatLng(c.replace(/[\u3000\s]+/g, ''),
function(point) {
if (point)
map.panTo(point);
}
);
ちなみに GClientGeocoder は、全角空白を空白として解釈してくれるようです。なので、この謎さえ解決すれば、ソースコード上では、空白(全角を含む)を意識しなくてよいはずなのですが・・・。

0 件のコメント: