質問失礼します。
現在位置情報から住所を検索する逆ジオコーディングを行っています。
コードはほぼコピペで動かなかった部分だけをいじりました。
下記コードを実行するとグローバル変数が表示されません。
またこのコードは必要?と気になる部分があります。
下記がコードです。
<body> <div id="result"></div> <div id="result2"></div> </body> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="https://maps.google.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXXXX"></script> <script type="text/javascript"> if( navigator.geolocation ){ navigator.geolocation.getCurrentPosition( function( position ){ var data = position.coords; //データの整理 var lat = data.latitude; var lng = data.longitude; var latLngInput = new google.maps.LatLng(lat,lng); var geocoder = new google.maps.Geocoder(); geocoder.geocode( {latLng: latLngInput}, function(results, status){ var address = ""; //この記述は必要? if (status == google.maps.GeocoderStatus.OK){ address = results[0].formatted_address; document.getElementById('result').innerHTML = address; }else if (status == google.maps.GeocoderStatus.ZERO_RESULTS){ alert("住所が見つかりませんでした。"); }else if (status == google.maps.GeocoderStatus.ERROR){ alert("サーバ接続に失敗しました。"); }else if (status == google.maps.GeocoderStatus.INVALID_REQUEST){ alert("リクエストが無効でした。"); }else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){ alert("リクエストの制限回数を超えました。"); }else if (status == google.maps.GeocoderStatus.REQUEST_DENIED){ alert("サービスが使えない状態でした。"); }else if (status == google.maps.GeocoderStatus.UNKNOWN_ERROR){ alert("原因不明のエラーが発生しました。"); } } ); //元はここにdocument.getElementById('result').innerHTML = address;が記述されていた。 }, function( error ){ //エラーの処理 } ); } document.getElementById('result2').innerHTML = address; </script>
result2の部分が何も表示されません。
また、コピペ元もグローバル変数で表示していたと思います。(ソース内のコメントアウトの位置にdocument.getElementById('result').innerHTML = address;が記述されていた。)
またソース内のvar address = "";の記述は必要なのでしょうか?
あってもなくても結果は変わりません。
以上、なぜグローバル変数が表示されないのかとvar address = "";の記述が必要なのかをご教授いただけますと幸いです。
よろしくお願いいたします。
追記
現在のコード
<body> <div id="result"></div> <div id="result2"></div> </body> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="https://maps.google.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXXXX"></script> <script type="text/javascript"> if( navigator.geolocation ){ navigator.geolocation.getCurrentPosition( function( position ){ var data = position.coords; var lat = data.latitude; var lng = data.longitude; var latLngInput = new google.maps.LatLng(lat,lng); var geocoder = new google.maps.Geocoder(); geocoder.geocode( {latLng: latLngInput}, function(results, status){ if (status == google.maps.GeocoderStatus.OK){ address = results[0].formatted_address; document.getElementById('result').innerHTML = address; }else if (status == google.maps.GeocoderStatus.ZERO_RESULTS){ alert("住所が見つかりませんでした。"); }else if (status == google.maps.GeocoderStatus.ERROR){ alert("サーバ接続に失敗しました。"); }else if (status == google.maps.GeocoderStatus.INVALID_REQUEST){ alert("リクエストが無効でした。"); }else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){ alert("リクエストの制限回数を超えました。"); }else if (status == google.maps.GeocoderStatus.REQUEST_DENIED){ alert("サービスが使えない状態でした。"); }else if (status == google.maps.GeocoderStatus.UNKNOWN_ERROR){ alert("原因不明のエラーが発生しました。"); } } ); }, function( error ){ //エラーの処理 } ); document.getElementById('result2').innerHTML = address; } </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/21 06:43
退会済みユーザー
2020/08/21 09:10
2020/08/21 09:23
退会済みユーザー
2020/08/21 09:53
2020/08/21 11:48