Gmaps と一緒に HTML5 地理位置情報関数を構築しています。
ユーザーの承認がジオロケートされるのを待っているときに、小さな問題が発生します。ユーザーは、ブラウザから、ジオロケートされるかどうかを尋ねられます。彼が [はい] をクリックすると、地理位置情報が表示されますが、gmap はトリガーされず、マップは画面に表示されません。その後、彼がそれをリフレッシュすると、すべてが正常に機能します。これは特に携帯電話で発生します。
地理位置情報を処理するときにコードの一部を提供します。
<script>
// <!-- GOOGLE MAPS & POSITION -->
var radius = 1;
var map;
var position;
jQuery(window).ready(function(){
//If we click on Find me Lakes
jQuery("#btnInit").click(initiate_geolocation);
initiate_geolocation();
$('#radius').change(function(v){
handle_geolocation_query(position);
});
});
function initiate_geolocation() {
if (navigator.geolocation)
{
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyBbfJJVh0jL1X9b7XFDcPuV7nHD1HlfsKs&sensor=true&callback=initialize";
document.body.appendChild(script);
navigator.geolocation.getCurrentPosition(append_google_map, handle_errors);
}
else
{
yqlgeo.get('visitor', normalize_yql_response);
}
}
function handle_errors(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED: alert("user did not share geolocation data");
break;
case error.POSITION_UNAVAILABLE: alert("could not detect current position");
break;
case error.TIMEOUT: alert("retrieving position timedout");
break;
default: alert("unknown error");
break;
}
}
function append_google_map(pos){
position = pos;
var mapOptions = {
zoom: 15,
center: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
streetViewControl: false,
mapTypeId : google.maps.MapTypeId.ROADMAP
}
if (typeof map == 'undefined') { //We make sure the map object hasn't been toogled to the page
map = new google.maps.Map(document.getElementById("gmap"), mapOptions);
//$('#gmap').slideToggle('slow');
setMarkerPosition(position.coords.latitude, position.coords.longitude);
}
handle_geolocation_query();
}
ここでわかるように、エラー コールバックと成功コールバックを使用して、initialize 関数で地理位置情報を開始しています。そのとき、ユーザーの画面にポップアップが表示され、ジオロケーションを承認するかどうか尋ねられます。彼が [はい] をクリックしても、コードの一部がトリガーされていないようです (または、handle_errors dunno にリダイレクトされます)。そのため、マップは画面に表示されません (コード内のコードでもう少し処理されます)。 append_google_map.
なぜこれが起こっているのか、そしてこれをどのように処理するのかを理解するのを手伝ってくれる人はいますか?
どうもありがとう