2016-06-25 1 views
0

Я создаю webapp с угловыми и использую firebase. Я использую geofire для возврата значений, находящихся в заданном радиусе заданного lat, lng. Он полностью работает и возвращает то, что я хочу, когда в радиусе есть значения. Однако, когда в зоне радиуса нет значений, он ничего не возвращает. Это проблема, потому что при загрузке главной страницы у меня есть счетчик, который начинается и заканчивается, когда что-то возвращается в обещании. Есть ли способ вернуть геофилу нулевое значение, если в данном радиусе нет значений?Получить GeoFire для возврата null, если в радиусе зоны нет индекса

Это код, я использую, чтобы retireve данные:

geoQuery.on("key_entered", function(key, location, distance) { 
     console.log(key + " entered query at " + location + " (" + distance + " km from center)"); 


    console.log(key); 

     },function(error) { 
     console.log("Promise was rejected with the following error: " + error); 
     }); 
    }); 

console.log не будет работать, если что-то не нашел, что находится в радиусе зоны. Мне нужно, чтобы он все еще возвращал что-то, поэтому я знаю, чтобы предупредить пользователя о том, что в данной области нет предприятий. Любая помощь будет принята с благодарностью!

UPDATE:

Я добавил «готовое» событие, а думая, что это будет инициировать «key_entered» событие, но не таким образом, оставив меня в квадрате один.

var onKeyExitedRegistration = geoQuery.on("key_exited", function(key, location, distance) { 

console.log (ключ + "вышел запрос к" + расположение + "(" + расстояние + "км от центра)"); });

geoQuery.on("ready",function() { 
    console.log(key + " moved within query to " + location + " (" + distance + " km from center)"); 

});

ответ

1

Событие key_entered будет срабатывать только при вводе ключа в гео-запрос. Поэтому, если ни один ключ никогда не войдет в запрос, он никогда не будет срабатывать.

Чтобы проверить любые ключи изначально находятся в гео-запросе, вы можете слушать для ready события. Это срабатывает после исходных данных загружены, так:

var keysEntered = false; 
geoQuery.on("key_entered", function(key, location, distance) { 
    console.log(key + " entered query at " + location + " (" + distance + " km from center)"); 
    keysEntered = true; 
    },function(error) { 
    console.log("Promise was rejected with the following error: " + error); 
    }); 
}); 
geoQuery.on("ready", function() { 
    console.log("initial data has loaded"); 
    if (!keysEntered) { 
    console.log("There was no initial data, so there are no business in range (yet)."); 
    } 
}); 

Смотрите API reference of Geofire for JavaScript для получения дополнительной информации.

+0

Благодарим вас за помощь, но после проведения «готового» мероприятия это все равно мне не помогло. Мне нужно получить флаг, который позволяет мне знать, что нет предприятий. – Brennan

+0

Такой флаг не существует, поэтому вам придется сделать свой собственный. Я добавил пример. –

+0

Я попытался сделать флаг таким же, но кажется, что когда он обновлен в функции «key ready», он не refelcted в «ready» – Brennan

Смежные вопросы