2015-09-18

位置情報の文字列化

取得した位置情報を文字列化し、URLやデータベースで利用したい。

主な選択肢は下記3つ

現時点で十分に枯れていそうなのはGeoHashかなと。
GeoHexはかっこいいが、今回の利用用とではビジュアルは無関係なので。
plus+codesはGoogle公式というわけでもないようなので、今後の展開は未知数。

あーありがち - GeohashのグリッドをGoogle Maps上に再現するツール書いた

古い記事だがやろうとしていることはほぼコレ。

URI設計の問題

クエリで渡すか、ハッシュで渡すか、階層へ盛り込むのもアリっちゃアリ。

  • http://example.com?geo=xn3pvxy
  • http://example.com#xn3pvxy
  • http://example.com/xn3pvxy

ライブラリの選定

経緯度とジオハッシュの相互変換にはライブラリを使用する。
下記の二つが候補として見つかった。

開発が最近行われており、オプションにより制度の調整も行えるlatlon-geohashを採用した。

1const latLon = Geohash.decode(geoHash); 2console.log(`現在地の経度は${latLon.lat}、緯度は${latLon.lon}です。`);

このように簡単にジオハッシュを経緯度へ変換できる。

1const geoHash = Geohash.encode(latLon.lat, latLon.lon, 8);

経緯度をジオハッシュ化する際に、3番目の引数で桁数(精度)を指定できる。
未指定でも経緯度から自動判別を行う。