我在这个课程中使用了一些方法更多代码JS Bin
var Maps = (function () {
function Maps() {
}
Maps.prototype.getCoord = function () {
navigator.geolocation.getCurrentPosition(this.onPositionSuccess, this.onPositionError);
};
Maps.prototype.getWatchCoord = function () {
var options = { enableHighAccuracy: true, timeout: 3000 };
navigator.geolocation.watchPosition(this.onWatchSuccess, this.onWatchError, options);
};
Maps.prototype.onPositionSuccess = function (position) {
var pos = {
'latitude' : position.coords.latitude,
'longitude' : position.coords.longitude
};
console.log(pos);
};
Maps.prototype.onWatchSuccess = function (position) {
var pos = {
'latitude' : position.coords.latitude,
'longitude' : position.coords.longitude
};
console.log(pos);
};
Maps.prototype.onWatchError = function (error) {
console.log(error.code);
};
Maps.prototype.onPositionError = function (error) {
console.log(error.code);
};
return Maps;
})();
var maps = new Maps();
maps.getCoord();
我要做的是,如果getCoord()
成功,则拨打getWatchCoord()
并比较latitude
和longitude
。如果它们相同,则不要运行getWatchCoord()
我尽可能在Maps类中尝试这样做。
我尝试了几种方法,但似乎我无法在getWatchCoord()
内拨打onPositionSuccess()
我不能在成功回调中设置var x = navigator.geolocation.getCurrentPosition....
然后return pos;
< - 它不会返回任何内容
有什么想法吗?
答案 0 :(得分:0)
您使用的是jQuery吗?如果是,请执行以下操作:
var Maps = (function () {
function Maps() {
}
Maps.prototype.getCoord = function () {
navigator.geolocation.getCurrentPosition($.proxy(this.onPositionSuccess, this), $.proxy(this.onPositionError, this));
};
Maps.prototype.getWatchCoord = function () {
var options = { enableHighAccuracy: true, timeout: 3000 };
navigator.geolocation.watchPosition($.proxy(this.onWatchSuccess, this), $.proxy(this.onWatchError, this), options);
};
Maps.prototype.onPositionSuccess = function (position) {
var pos = {
'latitude' : position.coords.latitude,
'longitude' : position.coords.longitude
};
console.log(pos);
//call getWatchCoord
this.getWatchCoord();
};
Maps.prototype.onWatchSuccess = function (position) {
var pos = {
'latitude' : position.coords.latitude,
'longitude' : position.coords.longitude
};
console.log(pos);
};
Maps.prototype.onWatchError = function (error) {
console.log(error.code);
};
Maps.prototype.onPositionError = function (error) {
console.log(error.code);
};
return Maps;
})();
var maps = new Maps();
maps.getCoord();
如果你没有传递一个具有正确'this'的范围的回调函数,那么当输入成功回调时,'this'将是全局的,这就是为什么我使用上面的$.proxy。现在这是未经测试的,所以我不知道你在这里遇到了什么其他问题。