デフォルトのオペランドが JavaScript でどのように機能するかを理解したつもりでしたが、明らかに理解できませんでした。最初にユーザーの地理的位置を特定し、それらの座標を中心としたマップを読み込もうとしています。デバイスがこれらの座標を特定できない場合、いくつかのデフォルト値でマップをロードするだけにフォールバックします。
私のエラー メソッドでは、gMap.init()
引数なしで呼び出していることに気付くでしょう。これは、変数lat
とlon
をそれぞれ 57.700992 と 11.893836 に設定する必要があることを意味すると考えました。代わりに、私は取得してUncaught TypeError: Cannot read property 'coords' of undefined
います。どこが間違っていますか?
また、存在するtheApp.init()
場合はマップを呼び出していますnavigator.geolocation
。HTML5 ジオロケーションをサポートしていないブラウザーは、マップを読み込もうとさえしないということですか?
var gMap = {
init: function (position) {
var lat = position.coords.latitude || 57.700992,
lon = position.coords.longitude || 11.893836,
geocoder = new google.maps.Geocoder(),
mapOptions = {
zoom: 12,
center: new google.maps.LatLng(lat, lon)
},
map = new google.maps.Map(document.getElementById('mapcanvas'), mapOptions);
},
error: function () {
console.log('failed to retrieve geoposition');
gMap.init();
}
}
var theApp = {
init: function () {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(gMap.init, gMap.error, {timeout:10000});
}
}
}