2013-03-17 2 views
1

Я пытаюсь отобразить карту Google из данных, которые у меня есть в LocationCollection. Пользователи будут определять filterParameters в модели, здесь JSON из фильтраЗапросить базовую коллекцию (или json) из модели фильтра (или 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
  • locatio п со средней ценой около 5 и 15
  • местоположения в пределах расстояния около 10 и 150 (это в метрах) (если пользователь позволяет геолокация)

можно вычислить расстояние от моего положения в место с эта функция js от геокодирования http://www.geodatasource.com/developers/javascript

Я искал фильтрацию базовой сети, но не нашел много, я искал системы запросов json, но не смог найти ничего.

Принимаю любые предложения.

ответ

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; 
}); 
+0

Это гениально, ТНХ много вы сохранили мне много времени. Я ухаживал за этим плагином: https://github.com/davidgtonge/backbone_query Ваш сценарий прекрасен, спасибо за помощь :) Можете ли вы рассказать мне, где вы нашли действительную документацию для метода фильтрации на базовой модели ? – Dimitri

+0

Ну, Backbone делегирует большинство своих функций управления списком на ** Underscore **, которая является библиотекой утилиты для обработки массивов и объектов JavaScript. В базовой документации есть ссылки на методы Underscore: http://backbonejs.org/#Collection-Underscore-Methods. – snedkov

+0

Я прочитал документацию по фильтрации подчеркивания, но для меня это было не очень понятно, я буду рад, если у них появятся некоторые примеры onlines. – Dimitri

Смежные вопросы