1

我正在尝试根据 LocationCollection 中的数据呈现谷歌地图。用户将在模型中定义 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 回答