JavaScriptで緯度経度を取得して、特定地点との距離を判定するJavaScriptを、ChatGPTを使って組みました。JavaScriptで緯度経度を取得して、特定地点との距離を判定します。特定地点の緯度経度を予め設定。あとはブラウザでGPSから位置情報を取得し、距離の差をもとめ、20m以内に入ったらビンゴ!とするJavaScriptです。
JavaScriptを使っで地点差分を求める
- CSS部分は適当に書き換えてください
- 特定地点はlatitude1とlongitude1
- Googleマップ上で右クリックすれば緯度経度はすぐにコピーできます
ひさしぶりにGoogle Apps Script を使ったのでデプロイでハマった。こちらが参考になりました、ありがとうございます。
>>【2023年最新】GASのウェブアプリを「デプロイ」する方法
観光ARや音声ARとしてどうぞ
プログラムは、ほぼChatGPTで書きましたので、ライセンス的にはご自由にどうぞです。QRコードでの読み取り観光ガイドと異なる点は、その場所にこないと動作させられない、画面を変えずともその場所ならではの挙動をさせられる、といったところで使い分けをすると良いかと思います。
>>ChatGPTは商用利用できる?著作権問題と使用する際の注意点について
「お客様が本規約を遵守することを条件として、OpenAIは、ここにアウトプット(作成したコンテンツ)に関する全ての権利、権限および権益をお客様に譲渡します。つまり、お客様は、本規約を遵守すれば、販売や出版などの商業目的を含め、いかなる目的でもコンテンツを使用することができます。」
つまり、ChatGPTで生成したコンテンツの権利はユーザーに帰属し、発生した収益もユーザーに還元されることが分かります。また、利用規約を遵守する限り、販売や出版などの商業目的で良いと記載されています。
観光名所に近づいたらガイドを表示
QRコードと違って、読み取りが必要ありません。毎回同じボタンで表示内容を変えるなどすると、UX的にもやさしいです。
脱出ゲームなどマップゲームで利用
定期的に位置情報を取得し、特定地点に近づいたら音声を流してヒントを聴けるとか。
JavaScriptで特定地点との距離を求める
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ハチ公銅像までの距離</title> <style> body { background-color: yellow; /* 背景色を黄色に設定 */ margin: 0; /* 余白をなくす */ } .container { display: flex; flex-direction: column; /* 縦方向の並び */ justify-content: center; /* 水平方向の中央揃え */ align-items: center; /* 垂直方向の中央揃え */ height: 80vh; /* コンテナの高さをビューポートの高さに設定 */ } #check { font-size: 18pt; background-color: purple; /* ボタンの背景色を紫に設定 */ color: white; /* ボタンのテキスト色を白に設定 */ border: none; /* 枠線を削除 */ padding: 10px 20px; /* パディングを設定 */ border-radius: 5px; /* ボタンの角を丸くする */ } #check:hover { background-color: #7d00ff; /* ホバー時のボタンの背景色を変更 */ } .text { font-size: 24pt; color: black; /* テキストの色を黒に設定 */ margin-bottom: 18pt; /* ボタンとの間のマージン */ } </style> </head> <body> <div class="container"> <div class="text">ハチ公銅像までの<br/>距離を測るよ<br/>(10m以内でビンゴ)</div> <button id="check">場所をチェックする</button> <div class="text"></div> <div class="text"><img src="landmark_hachikou.png" width="200"/></div> </div> <script type="text/javascript"> // ハチ公銅像の緯度経度を取得する const latitude1 = 35.65906317377941 const longitude1 = 139.700618390672; // ボタンの要素を取得する const button = document.getElementById("check"); // ボタンのクリックイベントを処理する function calculateDistance(lat1, lon1, lat2, lon2) { const R = 6371e3; // 地球の半径、メートル単位 const a1 = lat1 * Math.PI / 180; // a1、b1 は緯度経度のラジアン値 const a2 = lat2 * Math.PI / 180; const b1 = (lat2 - lat1) * Math.PI / 180; const b2 = (lon2 - lon1) * Math.PI / 180; const a = Math.sin(b1 / 2) * Math.sin(b1 / 2) + Math.cos(a1) * Math.cos(a2) * Math.sin(b2 / 2) * Math.sin(b2 / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); const distance = R * c; // メートル単位の距離 return distance; } button.addEventListener("click", () => { // 位置情報を取得する navigator.geolocation.getCurrentPosition((position) => { // 緯度を取得する const latitude2 = position.coords.latitude; // 経度を取得する const longitude2 = position.coords.longitude; // 距離を計算する const distance = calculateDistance(latitude1, longitude1, latitude2, longitude2); // 距離が10m以内かどうかを判定する const isInRange = distance < 20; // 結果を表示する var gosa = (Math.round(distance * 10)/10); var aaa = "誤差:"+gosa+"m"; if (isInRange) { alert("ビーーンゴ! "+aaa); } else { alert("もっと近づいて!"+aaa); } }); }); </script> </body> </html>
1冊ですべて身につくJavaScript入門講座 (1冊ですべて身につく) | Mana
・ ・ ・ ・ ・
>>安っ!アマゾンで半額以下になっている食品タイムセール
セール特設ページを見る
↓↓↓無料のニュースレターを配信中です