こんにちは!Yokoです。
Qlikのレイヤ表示で銭湯マップをつくってみる(その3)で、「もう続編はない」と書いたけど、欲が出てきてしまいました😅
というのは、Qlikで銭湯へ行くのに最寄りの駅からのルートはおおよそわかるけど、このマップで行き先までたどり着ける自信がない…
QlikのマップはOpen Street Mapなので、建物やお店などの名称は何も表示されず、何か目印がないと、やっぱりわかりにくいんだよね。じゃあ、どこかからそういうデータを集めてきて建物の名称なども表示するようにする?
そんなことやりたくない。そこまで暇じゃないし…
やっぱり、経路を検索するなら、Googleマップには叶わないよなあ。
いっそのこと、GoogleマップをQlikに埋め込んじゃうとか…
そんなことできるなら、とっくにやっとるわい😂
やはり、餅屋は餅屋に任せるべきで、QlikでできないことはGoogleマップでやればいいんだよな。
それには、GoogleマップのURLを調べて、Qlikから飛ばしちゃえばいい!
それも2つの地点の位置情報を渡して、一発でGoogleマップ上で経路が出てくるっていうのは素敵じゃない?
ということで、Qlikのレイヤ表示で銭湯マップをつくってみる(その4)にはせずに、タイトルを改めて、やってみるよ。
Google MapsのURLスキーム
Google Mapsの公式ドキュメントによると、URL指定で以下の4つのリクエストができるようです。
- 検索(ピン表示、検索結果表示)
https://www.google.com/maps/search/?api=1¶meters - ルート(ルート検索)
https://www.google.com/maps/dir/?api=1¶meters - 地図表示(マーカー、ルートなしで結果表示)
https://www.google.com/maps/@?api=1&map_action=map¶meters - ストリートビューパノラマ表示(パノラマ画像表示)
https://www.google.com/maps/@?api=1&map_action=pano¶meters
ここで、api=1って何だ?と思うかもしれません。
何かAPIキーを取得しないと使えないように見えますが、むしろ1でなければいけないようで、api=1が含まれていないとパラメータは無視されてしまうそうなので、固定と考えましょう。
Googleマップ検索の実験
Qlikに実装するまえに、URLのパラメータパターンを実験してみます。
まずは検索から…
Google Mapsの公式ドキュメントから検索の項を調べるとqueryパラメータを使えと出てきます。
- queryパラメータ
https://www.google.com/maps/search/?api=1&query=<検索文字列 または 緯度・経度>
では 「松の湯」を検索してみましょう。
https://www.google.com/maps/search/?api=1&query=松の湯

都内には松の湯が5つあるので、どこか識別できないのかな?公式ドキュメントではstarbucksの場所が検索できていたのに…
Google business profileに登録されている必要があるのかな?もしくは日本語がダメとか?😄
では、新宿区を追加して指定したら?
https://www.google.com/maps/search/?api=1&query=松の湯+新宿区

これは確かに検索は成功していますが、キーワードで組み合わせるのはスマートではないですよね。
緯度・経度でもやってみましたが、ジオコーディングで取得した緯度・経度は微妙にずれています。これはジオコーディングの精度の問題なんだと思います(実際、Google Mapsで確認した緯度・経度はジオコーディングしたものとは若干のズレがありました)。
でも、普段Googleマップを使っていて、入力した住所が正しければ問題なく検索できてますよね?
ということは、住所さえ正しければ、正しく場所を特定できるはずです。
そこで、実際にGoogleマップで検索した時のURLを調べたら、以下のURLで検索できることがわかりました。
https://www.google.com/maps/place/<住所>/@<緯度>,<経度>,20z
末尾の20zはマーカーを表示するための最適な倍率(zoom)で、僕の環境では19z以上を指定しないとマーカー表示がうまくできないようでした。

この方法で指定した結果、正しく表示されるのですが、place/を使用する場合、住所と緯度・経度を指定する必要があるようです。不思議なことに緯度・経度が微妙にずれていても、Googleマップのほうでは住所で検索してくれています。一旦、これでよしとします。
もっと最適な方法があれば是非教えて下さい🙇♂️
経路(ルート検索)のURL
位置の検索はうまくいきましたが、今回の主題は「駅から銭湯までのルートを検索する」ことなので、Google Mapsの公式ドキュメントの「経路」を参考に進めていきます。
今度はうまくいきますように🙏
https://www.google.com/maps/dir/?api=1&destination=<緯度>,<経度>
または
https://www.google.com/maps/dir/?api=1&destination=<キーワード>
以上の例は、現在地からのルートを検索してくれます。
これは問題なく表示できました(個人情報の問題があるので、ここでは割愛します🙇♂️)
始点と終点を指定する場合は以下のとおりとなります。
https://www.google.com/maps/dir/?api=1&origin=<緯度>,<経度>&destination=<緯度>,<経度>
または
https://www.google.com/maps/dir/?api=1&origin=<キーワード>&destination=<キーワード>
おそらく、銭湯の緯度経度は微妙なズレがあることを考えると始点を緯度経度、終点を住所としたいところです。
多分いけると思うのですが…
https://www.google.com/maps/dir/?api=1&origin=<落合駅の緯度>,<落合駅の経度>&destination=<松の湯の住所>
で指定して実行すると…

やった!これで問題ないようです。
検索ではハマりましたが、経路は一発でうまくいきました。
QlikにGoogleマップへのリンクを実装する
GoogleマップのURLがわかったので、いよいよQlikに実装していきます。
ここからは簡単ですよね。
Qlikのレイヤ表示で銭湯マップをつくってみる(その3)で作成したマップの横に配置したストレートテーブルに列を追加していきます。
まずは、位置情報を追加します。
項目は数式でURLリンクを数式で設定して、表示をテキストからリンクにすればテーブルに表示されたリンクからGoogleマップに遷移します。

| 設定項目 | 値 |
|---|---|
| 項目 > 項目 | =’https://www.google.com/maps/place/’ & 住所 & ‘/@’ & 緯度 & ‘,’ & 経度 & ‘,20z’ |
| 項目 > ラベル | 位置情報 |
| プレゼンテーション > 表記 | リンク |
| プレゼンテーション > リンクの設定 | ラベルを追加 |
| プレゼンテーション > ラベルにリンク | ▶Google Mapsで確認 |
位置情報と同様に「ルート検索」の列を追加していきます。
設定はほぼ同様ですが、位置情報と違い駅が特定されていなければ、ルートは検索できないので、表示条件を指定する必要があります。

| 設定項目 | 値 |
|---|---|
| 項目 > 項目 | =’https://www.google.com/maps/dir/?api=1&origin=’ & 駅_緯度& ‘,’ & 駅_経度 & ‘&destination=’ & 住所 |
| 項目 > ラベル | ルート検索 |
| プレゼンテーション > 条件に応じて列を表示 | GetPossibleCount(駅コード)=1 |
| プレゼンテーション > 表記 | リンク |
| プレゼンテーション > リンクの設定 | ラベルを追加 |
| プレゼンテーション > ラベルにリンク | ▶Google Mapsで確認 |
以上で設定は完了しました。
シート上の表示は以下のとおり。
「条件に応じて列を表示」駅が1つに絞り込まれた時だけ「ルート検索」が表示されるようになっています。

[ルート検索]をクリックするとこんなふうにGoogleマップで経路を表示してくれます。
これで、銭湯に行くルートをGoogleマップで詳細を表示しながら確認することができますね!
Qlikをスマホで表示しながらGoogleマップで位置を確認するーなんてことする人はいないと思うけどねー

まとめ
Qlik内のURLリンクからGoogleマップに遷移する方法をご紹介しました。
GoogleマップのURL指定の仕方は少し試行錯誤しましたが、この方法は緯度・経度に若干のずれがあったとしても、Googleマップが賢いのできちんと検索してくれます。
改めて、Googleマップに感謝!
最後に、このシリーズが良かった!と思ったらLINEやXでフォローお願いします。
ではまた!
関連記事はこちら
Qlikのレイヤ表示で銭湯マップをつくってみる(その1)
Qlikのレイヤ表示で銭湯マップをつくってみる(その2)
Qlikのレイヤ表示で銭湯マップをつくってみる(その3)


