Geolocation APIをjQuery.Deferredでラップ
function geolocation() {
var deferred = $.Deferred();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
deferred.resolve(position.coords);
}, function (error) {
deferred.reject(error.code);
});
} else {
deferred.reject();
}
return deferred.promise();
}
geolocation()
.done(function(coords) {
console.log(coords);
})
.fail(function(errorCode) {
switch (errorCode) {
case 1:
// 位置情報の利用が許可されていません
break;
case 2:
// デバイスの位置が判定できません
break;
case 3:
// タイムアウト
break;
default:
// APIが未対応
}
});