まちで位置情報拾えました!(少数第5位以下を切り捨てた緯度経度がif文でtrueだったときの遷移)

Reply to this note

Please Login to reply.

Discussion

助けてクレメンスしてみる🙏

if文で分岐させてるだけなので

複数位置に対応するにはelse ifを延々と書き続けることになります。

そこで、次のステップは

緯度・経度・結果ページ(現状divタグのidに突っ込むinnerHTML)の組み合わせを

データベースに登録していく

という考え方で合ってるのでしょうか……?

#[0]

位置情報が多くなるならDBに入れて置いてDBがあるサーバーにAPIを作って、現在位置を入れてAPIを呼び出すのがいいと思います!

つよつよkojira氏〜〜!!

ありがとうございます!

DBは教本で触った程度なので、復習しっかりして、まずは自分のレンサバで使えるphp、MySQLでやってみます。

ぐっどらっく!

取っ掛り分からない時はChatGPTに聞くとキーワード出てくるのでそっからググるのオススメ

そういう使い方〜!

実はお話ししたことがないので開発のお手伝いしてもらうのありありですね……😭✨

でもこの規模なら緯度経度とスポット名、漫画のurlが入ったjsonファイルを置いとくだけでもいけるかも?

じぇ じぇいそん

NIP-05認証以外で新規作成したことがなく……!(調べます)

基本的にはその方針で大丈夫です。

なに企ててるかわかんないけどがんがって!

よ、よかった、合ってた

学習しながら書いてるので、勘が正しいのかどうしても確認したい時があり……!

UGMさんありがとうございます🙏

今やろうとしているのは、特定スポットに行った時に何かが得られる、であってますか?

スポットの数はどのくらいですか?

合ってます!

「東京駅に行くと東京駅にまつわる漫画が読める」みたいな実装で、

スポット数をさくっと増殖できるシステムにしておけたら一番良いです。

とはいえ、はじめは10くらいで考えています。

学習しながらとのことなのでアレですけど、そうなるとDB登録の次に覚えることはif~else列挙からの脱却、具体的にはforeachなどを使ったループ処理だと思いました。

ともあれ、ゆっくり自分のペースでやってみてください。フレーフレー!

forEachなんかどっかでやりました この体たらく……!

チュートリアル化してて面白いです。頑張ります🙏

であれば、緯度経度を直接判定すると大変そうなので

・中心座標と中心からの距離

・開始座標と終了座標(四角エリア判定)

・範囲付き座標(MGRSコード)

のいずれかのデータをスポット情報として登録して使うと良いと思います。

よくあるのは、現在位置と東京駅35.6809591 139.7673068 の距離を計算した結果、半径500m以内にいるなら特定のページに飛ぶ、などの仕組みです。

距離計算: https://www.gadgety.net/shin/lang/php/distance.html

また、たくさんの位置を後から動的に(Web上などから)追加・変更できるように対応したいのであればDB管理もありですが、編集者が一人なのであればとりあえずはPHPコード上に配列テーブルを作っても良いかもしれません。

詳しくありがとうございます!

本命でやりたかった実装は「中心座標と中心からの距離」なので、これでいけるかやってみます。

配列もなるほど!です。

2点間の緯度経度から距離を求めるには、日本国内限定で、しかもあまり精度が重要でなければ

https://tech.raksul.com/2020/07/31/rails_distance_calculation/

にあるような、ざっくりした計算でもよさそうです。この関数を用意すれば DB を使わなくても PHP や JavaScript でも自前で距離が求められます。

そして、どういうわけか(?)ちょうど手元に JavaScript 実装があったので貼っておきます。ご自由にお使いください。

(最寄りのスープカレー店を探すために使っているコードです)

```javascript

function distanceInKm(lat, lng, lat0, lng0) {

return (

Math.sqrt(

Math.pow((lat - lat0) * 111000, 2) + Math.pow((lng - lng0) * 91000, 2)

) / 1000

);

}

const d = distanceInKm(

35.6809591, 139.7673068, // 東京駅

35.6983223, 139.7730186, // 秋葉原駅

);

console.log(d, "km"); // 1.9961735103233893 km

```

もっと精度よく計算する近似式として、ヒュベニの公式、測地線航海算法などもあるようです。既存実装も色々あるかもしれません。

そして、ちょっとアプローチが違いますが、ジオハッシュというアイディアも面白いので紹介させてください。

ジオハッシュを使うと緯度経度を文字列で表現できて、しかも桁数で精度が決められることから、エリアを表現できます。

Wikipedia のページは

https://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%AA%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5

なんですが、以下の記事

https://techblog.yahoo.co.jp/entry/20191210786752/

の図がイメージしやすいかなと思います。

ここで必要になる「文字列を先頭一致/完全一致で検索する」という操作はよく使われるので、高速な方式が色々あります。それを活用しやすいというのがメリットだと思います。件数が少ないならこの点にはあまり意味はなさそうで、緯度経度が文字列になる、くらいのメリットかも。というわけで、こちらは参考まで、という感じです。

位置情報大好き人が早口でお送りしました!