Я пытаюсь вызвать функцию forwardGeocoder из титана, но у меня возникают некоторые проблемы с получением результатов, рассмотрим следующий код: -
x = 0;
Ti.Geolocation.forwardGeocoder(startTextFieldContents, function(evt) {
var startPin = Ti.Map.createAnnotation({
longitude : evt.longitude,
latitude : evt.latitude,
pincolor : Ti.Map.ANNOTATION_GREEN
});
var startPinLocation = {
longitude : evt.longitude,
latitude : evt.latitude
}
mapview.addAnnotation(startPin);
x = 1;
});
Ti.API.log('X = ' + x);
Если вы посмотрите на X, когда явыйдите из системы, так как ВСЕГДА равен 0, хотя я устанавливаю его в своей анонимной функции как 1, и поскольку это вызов функции с анонимной функцией в качестве аргумента, я пытаюсь выяснить, как извлечь это значение и сделать егодоступно вне forwardGeocoder.
Чтобы решить эту проблему, основываясь на том, что было сказано в этом посте, я использовал следующий код
var completed = 0;
Ti.Geolocation.forwardGeocoder(startTextFieldContents, function(evt) {
var startPin = Ti.Map.createAnnotation({
longitude : evt.longitude,
latitude : evt.latitude,
pincolor : Ti.Map.ANNOTATION_GREEN
});
startPinLocation = {
longitude : evt.longitude,
latitude : evt.latitude
}
mapview.addAnnotation(startPin);
++completed;
if (completed === 1) {
Ti.Geolocation.forwardGeocoder(finishTextFieldContents, function(evt) {
var finishPin = Ti.Map.createAnnotation({
longitude : evt.longitude,
latitude : evt.latitude,
pincolor : Ti.Map.ANNOTATION_RED
});
finishPinLocation = {
longitude : evt.longitude,
latitude : evt.latitude
}
mapview.addAnnotation(finishPin);
mapview.addRoute({
name : 'Route',
points : [startPinLocation, finishPinLocation],
color : 'green',
width : 1
});
});
}
});