Firebase でジオコード (緯度/経度など) を保存および/または検索しようとした人はいますか? これは MongoDB に組み込まれている機能であり、代わりに Firebase をバックエンドに使用することを検討しているため、Firebase でこのシナリオをどのように処理するかを知る必要があります。
ありがとう!
The folks at Firebase recently open-sourced a library that allows you to store and query location data in Firebase. In short, this is very easily accomplished because all keys in Firebase are strings, and Firebase has support for startAt()
and endAt()
queries that allow you to do the appropriate windowing for geohashes and bounding boxes.
For implementation details and usage, check out the live demos, source code, and their blog post on GeoFire.
こんにちは、firebase と GeoFire を使用してリアルタイムの Google マップを作成しました。GeoFire は本当にクールで使いやすいです。lon lat と radius を使用してクエリを実行できます。firebase db のクエリに使用できるキーを返します。geoFire オブジェクトを作成する際に、必要なキーを設定します。通常、その距離に関連付けられているオブジェクトを取得するために使用できる参照です。
ここに geoFire へのリンクがあります: https://github.com/firebase/geofire-js
使用例を次に示します。
ナビゲーターを使用して取得した緯度経度があります。
var lon = '123.1232';
var lat = '-123.756';
var user = {
name: 'test user',
longitude: lon,
latitude: lat
}
usersRef.push(user).then(function(response) {
var key = response.key;
var coords = [lon, lat];
geoFire.set(key, coords, function(success){
console.log('User and geofire object has been created');
});
})
これで、次を使用してユーザーを照会できます。
// Set your current lon lat and radius
var geoQuery = geoFire.query({
center: [latitude, longitude],
radius: radiusKm
});
geoQuery.on('key_entered', function(key, location, distance) {
// You can now get the user using the key
var user = firebaseRefUrl + '/' + key;
// Here you can create an array of users that you can bind to a scope in the controller
});
グーグルマップをご利用の場合。angular-google-maps を使用することをお勧めします。マーカーと円の配列を取り込む非常にクールな Google マップ ディレクティブです。したがって、コントローラーで $scope.markers または $scope.circles が変更されるたびに、面倒なコードなしでマップに自動的に適用されます。彼らは非常に優れたドキュメントを持っています。
ここにリンクがあります: http://angular-ui.github.io/angular-google-maps/