私は Firebase + GeoFire の初心者で、geoFire クエリ機能に問題があります。
geoQuery 関数の結果を配列に追加し、関数で返したいと思います。しかし、geoQuery.on
メソッド内で操作しているデータは、範囲外または利用できないように見えるか、約束のためにわかりません...事実は geoquery.on メソッドの外にあり、変数 Sellers は空です。
geoQuery から結果を返し、それを戻り変数に保存するにはどうすればよいですか
//Set seller position in firebase db
var setPosition = function() {
navigator.geolocation.getCurrentPosition(setPositionSuccess, error, options);
//navigator.geolocation.watchPosition(setPositionSuccess, positionError, { enableHighAccuracy:true })
};
//Get sellers near buyer position
var getSellersForCurrentPosition = function() {
navigator.geolocation.getCurrentPosition(getPositionSuccess, error, options);
//navigator.geolocation.watchPosition(positionSuccess, positionError, { enableHighAccuracy:true })
};
//Callback function from html 5 geo api
function getPositionSuccess(pos) {
var crd = pos.coords;
var currentPosition = [crd.latitude, crd.longitude];
// Query radius
var radiusInKm = 2;
var firebaseRef = new Firebase(FBURL + "/geofire/sellers/");
var geoFire = new GeoFire(firebaseRef);
var geoQuery = geoFire.query({
center: currentPosition,
radius: radiusInKm
});
var sellers = [];
var oneSeller = {};
var onKeyEnteredRegistration = geoQuery.on("key_entered", function(key, location, distance) {
oneSeller = {
id: key,
distance: distance,
location: location
};
sellers.push(oneSeller);
});
var onReadyRegistration = geoQuery.on("ready", function() {
geoQuery.cancel();
});
return sellers;
}
ところで、html5 の地理位置情報はどれくらい正確ですか? デスクトップ ブラウザとモバイル ブラウザで違いはありますか?