apiを使わずに、navigator.geolocation.getCurrentPositionだけでJSで取得でくる。
ただし、chromeではSSL環境では使用できない。そのため、テストをする際もローカルではデフォルトではテストできないので、SSL環境を構築する必要がある。※動作確認するために、ドメインを取得してLet’s Encryptの環境を作りました。
<head> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> </head> <div id="app"> <h1>現在地</h1> <span v-if="err"> 緯度経度の情報を取得できませんでした。 </span> <ul> <li>緯度:{{lat}}</li> <li>経度:{{long}}</li> </ul> <a v-bind:href="`${url}`">登録する</a> </div> <script> let lat = ""; let long = ""; function success(pos) { const crd = pos.coords; lat = crd.latitude; long = crd.longitude; let url = "/index.html?lat=" +lat + "&long=" + long; var app = new Vue({ el: '#app', data: { lat: lat, long: long, url: url, err: null } }) } function error(err) { console.warn(`ERROR(${err.code}): ${err.message}`); let url = "/index.html?lat=" +lat + "&long=" + long; var app = new Vue({ el: '#app', data: { lat: lat, long: long, url: url, err: err } }) } navigator.geolocation.getCurrentPosition(success, error); </script>