🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

解決済

1回答

839閲覧

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

pegy

総合スコア245

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2019/10/11 00:45

編集2019/10/11 00:46

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

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

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

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

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

javascript

1<script type="text/javascript"> 2 3var map; 4var marker = []; 5var infoWindow = []; 6var markerData = [ 7 { 8 lat:35.658400, 9 lng: 139.702352, 10 icon:'logo.png', 11 contents: '<span class="sample">dlk</span><br><a href="https://www.yahoo.co.jp/">Link</a>' 12 }, 13 { 14 lat:35.6867799, 15 lng:139.737495, 16 icon:'logo2.jpg', 17 contents: '<span class="sample">dlk</span><br><a href="https://www.yahoo.co.jp/">Link</a>' 18 } 19]; 20 21function initialize() { 22 var latlng = new google.maps.LatLng(35.680552, 139.766923); 23 var opts = { 24 zoom: 11, 25 center: latlng, 26 mapTypeId: google.maps.MapTypeId.ROADMAP 27 }; 28 map = new google.maps.Map(document.getElementById("map"), opts); 29 30 31for (var i = 0; i < markerData.length; i++) { 32 marker[i] = new google.maps.Marker({ 33 position: new google.maps.LatLng({lat: markerData[i]['lat'], lng: markerData[i]['lng']}), 34 map: map, 35 icon:new google.maps.MarkerImage(markerData[i]['icon'],null,null,null,new google.maps.Size(20, 20)) 36 }); 37 infoWindow[i] = new google.maps.InfoWindow({ // 吹き出しの追加 38 content:markerData[i]['contents'] 39 }); 40 markerEvent(i); // マーカーにクリックイベントを追加 41 function markerEvent(i) { 42 marker[i].addListener('click', function() { // マーカーをクリックしたとき 43 infoWindow[i].open(map, marker[i]); // 吹き出しの表示 44 }); 45 } 46 } 47} 48 49function move() { 50 var place = document.getElementById('keyword').value; 51 var geocoder = new google.maps.Geocoder(); 52 53 geocoder.geocode({ 54 address: place 55 }, function(results, status) { 56 if (status == google.maps.GeocoderStatus.OK) { 57 58 var bounds = new google.maps.LatLngBounds(); 59 60 for (var i in results) { 61 if (results[i].geometry) { 62 // 緯度経度を取得 63 var latlng = results[i].geometry.location; 64 // 住所を取得 65 var address = results[i].formatted_address; 66 } 67 } 68 console.log(address); 69 70 map.panTo(new google.maps.LatLng(latlng.lat(),latlng.lng())); 71 map.setZoom(13); 72 73 } else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) { 74 alert("該当する地名が見つかりませんでした"); 75 } else { 76 console.log(status); 77 alert("地名が入力されていません"); 78 } 79 }); 80} 81 82function current() { 83 var opts ={ 84 enableHighAccuracy: true, 85 timeout: 5000, 86 maximumAge: 0 87 } 88 if (navigator.geolocation) { 89 navigator.geolocation.getCurrentPosition(success,fail,opts); 90 } else { 91 alert("位置情報の取得に失敗しました") 92 } 93 94 function success(position){ 95 const currentLat = position.coords.latitude; 96 const currentLng = position.coords.longitude; 97 const latlng =new google.maps.LatLng(currentLat,currentLng); 98 99 console.log(latlng); 100 map.panTo(latlng); 101 map.setCenter(latlng); 102 map.setZoom(13); 103 104 } 105 function fail(){ 106 alert("通信プロトコルに問題がある可能性があります"); 107 } 108} 109</script>

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

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

投稿2019/10/11 00:51

maisumakun

総合スコア145970

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2019/10/11 03:01

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問