У меня проблема с сообщением об ошибке ...
"Uncaught TypeError: Объект f771b328ab06 не имеет метода addLocation" *
Я действительно не уверен, что вызывает это.'f771b328ab06'
- это идентификатор пользователя в ошибке.Я могу добавить нового пользователя и предотвратить дублирование пользователей, но когда я пытаюсь добавить их местоположение в список, я получаю эту ошибку.
Кто-нибудь видит, что происходит не так?Ошибка также возникает в операторе else
функции инициализации (если идентификатор пользователя существует, просто добавьте местоположение и не создавайте нового пользователя).У меня есть некоторые примечания в коде, и я почти уверен, что это отчасти связано с тем, как я изменил пример, предоставленный другим пользователем.
function User(id) {
this.id = id;
this.locations = [];
this.getId = function() {
return this.id;
};
this.addLocation = function(latitude, longitude) {
this.locations[this.locations.length] = new google.maps.LatLng(latitude, longitude);
alert("User ID:" );
};
this.lastLocation = function() {
return this.locations[this.locations.length - 1];
};
this.removeLastLocation = function() {
return this.locations.pop();
};
}
function Users() {
this.users = {};
//this.generateId = function() { //I have omitted this section since I send
//return Math.random(); //an ID from the Android app. This is part of
//}; //the problem.
this.createUser = function(id) {
this.users[id] = new User(id);
return this.users[id];
};
this.getUser = function(id) {
return this.users[id];
};
this.removeUser = function(id) {
var user = this.getUser(id);
delete this.users[id];
return user;
};
}
var users = new Users();
function initialize() {
alert("Start");
$.ajax({
url: 'api.php',
dataType: 'json',
success: function(data){
var user_id = data[0];
var latitude = data[1];
var longitude = data[2];
if (typeof users.users[user_id] === 'undefined') {
users.createUser(user_id);
users.users[user_id] = "1";
user_id.addLocation(latitude, longitude); // this is where the error occurs
}
else {
user_id.addLocation(latitude, longitude); //here too
alert(latitude);
}
}
})
}
setInterval(initialize, 1000);
Поскольку я получаю идентификатор с телефона и выполняюне нужно генерировать его здесь (только получать), я закомментировал часть, которая создает случайный идентификатор.При этом мне пришлось добавить параметр в метод createUser
в Users()
, чтобы я мог передать идентификатор в качестве аргумента из Initialize()
.См. Изменения в createUser
ниже:
До, с сгенерированным идентификатором (часть, где генерируется число, находится в приведенном выше блоке кода с комментариями):
this.createUser = function() {
var id = this.generateId();
this.users[id] = new User(id);
return this.users[id];
};
После,с идентификатором, переданным в качестве аргумента:
this.createUser = function(id) {
this.users[id] = new User(id);
return this.users[id];
};
Если у кого-то есть какие-либо предложения, я был бы очень признателен.Спасибо!