Google Mapsより安いMapBoxに
GlideAppsの地図表示機能が、Google MapsからMapBoxに変わりました。
これまで地図の位置を、住所で指定する方法でして、Google Mapsも、見当違いな場所を示すことが多く、僕たちのマップでは多くは緯度経度で指定していますが、それができずに場所がずれていることがありました。 それでMapBoxに代わって。。 もっと見当違いな場所にいくようになりました。
そのかわり、MapBoxでは、緯度経度で表示できるようになりました。
実は、この緯度経度も、微妙で、正確な場所を表示してくれないこともあったりします。
また、すごいテクニックが要りますが、緯度と経度は、緯度,スペース経度としないと、GlideAppsがぶっとびます(涙)。 これ注意です。
Google Spread Sheetに、住所から緯度経度を入れる方法
これまでだと、Google Maps の Geocoding APIというものを叩いて、ということができたのですが、現在は、無料でできる範囲は、すぐに変わるので少し多めの変換ができません。。
Geocoding.jpも数多くをアクセスするのはちょっと問題があり。。
それで、今回は、 CSISシンプルジオコーディング実験 のAPIを使います。
このページを参考にさせていただきました。詳しいAPIの使い方は、こちらにあります。
Glide App用に少しだけ書き換えたり、住所に空白が入るとうまく出ないなどがあり、上記を少し修正しています。
シートを公開してますので、お使いください。 シートは見かけ上、下の表のようになっています。
A | B | C | D | E | F | G | H | I | J | K |
住所都道府県 | 空白外し | GeoCodeURL | ImportXML | SPLIT | 緯度経度 | |||||
東京都小平市 鈴木町 2丁目187 | 東京都小平市鈴木町2丁目187 | http://geocode.csis.u-tokyo.ac.jp/cgi-bin/simple_geocode.cgi?charset=UTF8&addr=東京都小平市鈴木町2丁目187 | 東京都小平市鈴木町2丁目187wgs19845東京都小平市鈴木町2丁目 東京都/小平市/鈴木町/二丁目 139.506287 35.722298 6 | 東京都小平市鈴木町2丁目187wgs19845東京都小平市鈴木町2丁目 | 東京都/小平市/鈴木町/二丁目 | 139.506287 | 35.722298 | 6 |
35.722298, 139.506287
|
一番左端のA列に、住所を入れてもらうと、そこから右に自動的に入っていきます。
関数の説明
B列は、空白を取り除く関数です。空白を検索してきて、何もないものに置き換えます。それが入れ子になっているのは、全角空白と、半角空白を取り除くためです。
=SUBSTITUTE(SUBSTITUTE(A2,“ ”,“”),” “,“”)
C列は、API用のURLを作ります。文字をUTF8にして、住所をセットしているだけです。
=“http://geocode.csis.u-tokyo.ac.jp/cgi-bin/simple_geocode.cgi?charset=UTF8&addr=” & B2
D列は、Google Spread Sheet のImportXMLという関数です。
=IMPORTXML(C2,“/”)
E列は、出てきた文字を空白区切って、右方向の列に書き出す関数です。
=SPLIT(D2,” “,true,true)
たまたま、今回は、GとH列に、経度・緯度 が入るので、K列に、緯度 コンマ 空白 経度と入るようにセットしています。
=H2&”, “&G2
これを、だだ~っと、行方向にコピペして、A列に住所を入れると30個くらいまでは、ささっと変換してくれます。 が。。。IMPORTXMLって一機に使えないような仕様になっているのか、50個くらいになると、ところどころエラーになります。その場合は少なくしてから使ってください。
コピペする人は、全角が半角になったりいろいろするので注意してね。
この方法で、バリアフリーアプリ、公園・避難所アプリを更新しました。
ただし。。
全体の地図表示では、緯度経度を使っているのですが、詳細表示では、住所にしています。
詳細表示の地図をタップすると、Google Mapsにアクセスするのですが、その時に緯度経度が若干ずれてしまっています。そのため、地図で表示しています。そうすると、MapBoxの方は住所での位置はむちゃくちゃなので、詳細表示のマップに表示されている位置は適当な位置になってしまっています。
全体表示では、割と正しい位置を示しています。(公園アプリの例)
一方で、詳細表示では、むちゃくちゃなところが表示されています。
でも、この地図をタップすると、住所で検索された場所をGoogle Mapsが表示するのでちゃんとした位置がわかります。
MapBox,Google Maps, GlideApp ともに無料で使っているので、文句は言えませんので、みなさまもご了承ください。
ちなみに。。GlideApp(月19ドル)くらい払ってあげてもいいかな?って思う今日この頃。。僕らの活動は、会費もとらず。。全部、自費でやってるので、何か、めぐる仕組みつくらないとダメですねぇ~(笑)