2013-03-17 5 views
1

LocationCollection에있는 데이터에서 Google지도를 렌더링하려고합니다. 모델의 filterParameters을 정의합니다 사용자는 여기필터 모델 (또는 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" 
} 
] 

위해 가지고 JSON의 샘플입니다 내 필터 매개 변수, 내가

  • id_ref_type_category 동일한 2 또는 4
  • locatio와 위치를 찾고 있어요 n은 평균 5 주위 가격과 15
  • (10) 150 (그것이 미터의) 주위로 이동할 수있는 거리 위치 (사용자가 허용하는 경우 위치 정보) 내가 함께 위치 내 위치에서의 거리를 계산할 수

지오 코딩의 js 함수 http://www.geodatasource.com/developers/javascript

백본 컬렉션 필터링을 찾았지만 많이 찾지 못했지만 json 쿼리 시스템을 찾았지만 아무 것도 찾을 수 없었습니다.

나는 어떤 제안이든 걸립니다. 위치 그것을 통해 수 있도록

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

을 내가 조금 필터 객체를 완화 한 : 여기처럼 모든 속성에 대한 밑줄 필터를 적용하는 방법에 대한 어떻게

답변

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

글쎄, 백본은 대부분의 목록 조작 함수를 ** 언더 코어 **에 위임합니다. ** 언더 코어 **는 JavaScript 배열과 객체를 처리하는 유틸리티 라이브러리입니다. 백본 설명서에는 Underscore 메서드에 대한 링크가 있습니다 (http://backbonejs.org/#Collection-Underscore-Methods). – snedkov

+0

나는 언더 스코어 필터링 문서를 읽었지 만, 나에게 충분히 명확하지는 않았지만, 몇 가지 예를 온라인으로 가지고 있다면 기쁠 것이다. – Dimitri

관련 문제