1

LocationCollection にあるデータから Google マップをレンダリングしようとしています。ユーザーはモデルで filterParameters を定義します。これはフィルターからの JSON です。

var filter = {
    "id_ref_type_category":[2,4],
    "pricemin":5,
    "pricemax":15,
    "distmin":10, // meters
    "distmax":150 // meters
}

コレクションにクエリを実行する必要があります。これは、自分の場所にある json のサンプルです。

var location = [
{
    "id":"1",
    "name":"Sushi 1",
    "price_min":"10",
    "price_max":"20",
    "price_avg":"15",
    "id_ref_type_category":"1",
    "latitude":"48.863831",
    "longitude":"2.356215"
},
{
    "id":"2",
    "description":"Miam ",
    "price_min":"15",
    "price_max":"35",
    "price_avg":"25",
    "id_ref_type_category":"4",
    "latitude":"48.864269",
    "longitude":"2.355153"
},
{
    "id":"3",
    "name":"Restaurant 1",
    "price_min":"5",
    "price_max":"20",
    "price_avg":"12.5",
    "street_number":"60",
    "id_ref_type_category":"1",
    "latitude":"48.863407",
    "longitude":"2.350938"
},
{
    "id":"4",
    "name":"Chez gigi",
    "price_min":"0",
    "price_max":"17",
    "price_avg":"8.5",
    "id_ref_type_category":"2",
    "latitude":"48.861824",
    "longitude":"2.350901"
}
]

私のフィルターパラメータに関して、私は探しています

  • id_ref_type_category が 2 または 4 の場所
  • 平均価格が 5 ~ 15 前後の場所
  • 10 ~ 150 前後の距離内の場所 (メートル単位) (ユーザーが地理位置情報を許可している場合)

ジオコーディングhttp://www.geodatasource.com/developers/javascriptからこのjs関数を使用して、自分の位置から場所までの距離を計算できます

バックボーン コレクションのフィルタリングを探しましたが、多くは見つかりませんでした。json クエリ システムを探しましたが、何も見つかりませんでした。

どんな提案でも承ります。

4

1 に答える 1

1

次のように、すべての属性にアンダースコア フィルタを適用するのはどうですか。

http://jsfiddle.net/cnDeu/1/

場所が通過できるように、フィルター オブジェクトを少し緩和しました。

基本的に、フィルターは次のようになります。

var filtered = loc.filter(function (el) {
    var dist = distance(el.get('latitude'), el.get('longitude'),
                        position.latitude, position.longitude, 'K') / 1000;

    return ((el.get('id') == filter.id_ref_type_category[0]) ||
        (el.get('id') == filter.id_ref_type_category[1])) &&
        el.get('price_avg') >= filter.pricemin &&
        el.get('price_avg') <= filter.pricemax &&
        dist >= filter.distmin &&
        dist <= filter.distmax;
});
于 2013-03-17T10:08:46.330 に答える