質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.71%

getCurrentPositionが前日と異なる地点を取得している現象

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 130

pegy

score 112

現在、デスクトップPCのGoogle Chrome(バージョン: 77.0.3865.90(Official Build) (64 ビット))
から以下のコードで現在地を取得(function current())しております。

昨日までは概ね正しく東京の新橋駅あたり取得できていたのですが、本日同じ環境で実行するとなぜか大阪の同じ位置を
取得します。currentLat とcurrentLngの緯度経度を出力してみると確かに大阪の位置を取得してしまっております。

特にブラウザ環境にも変化はないのですが、PCのネットワーク環境として動的なIPアドレスを採用しているのですが
位置情報の取得はブラウザ側の設定に依存すると思っていました。

getCurrentPositionやwatchPositionメソッドに関連してこのような症状について調べても適切な記事を見つけることができなかったため、アドバイスや同じ症状を経験したことがある方がいらっしゃれば、何とかお力添えを頂けるととてもうれしいです。

宜しくお願い申し上げます。

<script type="text/javascript">

var map;
var marker = [];
var infoWindow = [];
var markerData = [
  {
        lat:35.658400,
        lng: 139.702352,
        icon:'logo.png',
        contents: '<span class="sample">dlk</span><br><a href="https://www.yahoo.co.jp/">Link</a>'
  },
  {
    lat:35.6867799,
    lng:139.737495,
    icon:'logo2.jpg',
    contents: '<span class="sample">dlk</span><br><a href="https://www.yahoo.co.jp/">Link</a>'
  }
];

function initialize() {
    var latlng = new google.maps.LatLng(35.680552, 139.766923);
    var opts = {
      zoom: 11,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map"), opts);


for (var i = 0; i < markerData.length; i++) {
      marker[i] = new google.maps.Marker({
                  position: new google.maps.LatLng({lat: markerData[i]['lat'], lng: markerData[i]['lng']}),
                  map: map,
                  icon:new google.maps.MarkerImage(markerData[i]['icon'],null,null,null,new google.maps.Size(20, 20))
                  });
      infoWindow[i] = new google.maps.InfoWindow({ // 吹き出しの追加
                  content:markerData[i]['contents']
                  });
      markerEvent(i); // マーカーにクリックイベントを追加
      function markerEvent(i) {
          marker[i].addListener('click', function() { // マーカーをクリックしたとき
            infoWindow[i].open(map, marker[i]); // 吹き出しの表示
        });
      }
  }
}

function move() {
  var place = document.getElementById('keyword').value;
  var geocoder = new google.maps.Geocoder();

  geocoder.geocode({
            address: place
          }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {

              var bounds = new google.maps.LatLngBounds();

              for (var i in results) {
                if (results[i].geometry) {
                  // 緯度経度を取得
                  var latlng = results[i].geometry.location;
                  // 住所を取得
                  var address = results[i].formatted_address;
                }
              }
              console.log(address);

              map.panTo(new google.maps.LatLng(latlng.lat(),latlng.lng()));
              map.setZoom(13);

            } else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
              alert("該当する地名が見つかりませんでした");
            } else {
              console.log(status);
              alert("地名が入力されていません");
            }
          });
}

function current() {
  var opts ={
    enableHighAccuracy: true,
    timeout: 5000,
    maximumAge: 0
  }
  if (navigator.geolocation) {
         navigator.geolocation.getCurrentPosition(success,fail,opts);
     } else {
         alert("位置情報の取得に失敗しました")
     }

     function success(position){
       const currentLat = position.coords.latitude;
       const currentLng = position.coords.longitude;
       const latlng =new google.maps.LatLng(currentLat,currentLng);

       console.log(latlng);
       map.panTo(latlng);
       map.setCenter(latlng);
       map.setZoom(13);

     }
     function fail(){
       alert("通信プロトコルに問題がある可能性があります");
     }
}
</script>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

位置情報の取得はブラウザ側の設定に依存すると思っていました。

端末にGPS機能のないパソコンなどを使っている場合、位置情報のデータはけっこう気まぐれです。平然と他県に飛んでいったりします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/11 12:01

    コメントいただき有難うございます。そうなんですね。。たまたま昨日が良い感じだったということで、PCの場合何をもとに位置情報を取得しているかはわからなかったのですが、それなりに正確に取得できるんだと錯覚してしまいました。
    実際に実装するときはPCでは現在位置取得をdisabledかや隠す等をして対応することを検討します。(もともと作成しているアプリケーションが出先を想定しており、携帯等GPS付のデバイスを想定していたので)

    御礼申し上げます。
    宜しくお願い申し上げます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.71%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる