2016-06-25 8 views
0

나는 angularj와 함께 webapp을 구축 중이며 firebase를 사용하고 있습니다. geofire를 사용하여 주어진 lat, lng의 주어진 반경 내에있는 값을 반환합니다. 그것은 완전히 작동하고 반경에 값이있을 때 원하는 것을 반환합니다. 그러나 반지름 영역에 값이 없으면 아무것도 반환하지 않습니다. 초기 페이지로드시 약속 된 것으로 반환 될 때 시작되고 끝나는 회 전자가 있기 때문에 이것은 문제입니다. 지정된 반지름에 값이 없으면 geofire가 null 값을 반환하도록 할 수 있습니까? 반지름 영역 내에 인덱스가없는 경우 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이 실행되지 않습니다. 특정 지역에 사업장이 없다는 사실을 사용자에게 알리기 위해 계속해서 뭔가를 반환해야합니다. 어떤 도움이라도 대단히 감사하겠습니다!

업데이트 :

나는 그것이 'key_entered'이벤트를 트리거 할 생각뿐만 아니라 '준비'이벤트를 추가하지만, 따라서 원점에서 다시 나를 떠나지 않았다.

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

console.log (key + "exit +"location + "("+ distance + "km from center)"); }});

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'함수에서 업데이트되었을 때 'ready'로 다시 채워지지 않은 것처럼 보입니다. – Brennan