Клуб API Карт

Select GeoQuery

Пост в архиве.

Не совсем понимаю, как правильно использовать select для поиска по полям в GeoQuery. Необходимо отсортировать метки по стоимости от и до. Как только вставляю код, который должен присваивать значение переменным при изменении селектов - метки вообще перестают появляться.

 

http://gdepsiholog.ru/klientam/naiti-psihologa/

6 комментариев

 

var PriceFrom = $("#price_from :selected").val();

byPriceFrom = psihologi.search('properties.price >= PriceFrom');

А каким образом GeoQuery.search() должен угадать, что PriceFrom - это не строка "PriceFrom", а значением переменной PriceFrom?

 Вот такой вариант наверное самый простой:

byPriceFrom = psihologi.search('properties.price >= ' + PriceFrom).add(byPriceFrom);

 

Можно воспрользоваться возможностью указывать не строку проверки, а функцию проверки:

byPriceFrom = psihologi.search(function(a){if(a.properties.get('price') >= PriceFrom)return true}).add(byPriceFrom);

 

 

Спасибо, заменил исправил эту ошибку. Но теперь вообще не отслеживается изменение чебоксов - галочки вообще не работают.. При этом до внедрения списков всё отрабатывало корректно. Может, это из-за добавленной функции проверки списков?

может, было лишним ".add(byPriceFrom);" ?

byPriceFrom = psihologi.search('properties.price >= ' + PriceFrom).add(byPriceFrom);byPriceFrom = psihologi.search('properties.price >= ' + PriceFrom);

кстати, а нормально будут сравниваться цены, если они указаны как строки? я просто сам далеко не спец в javascript...

Вроде, нормаьно должно быть:

"При сравнении числа и строки, строка преобразуется в числовое значение. Яваскрипт при этом получает значение числа из строкового литерала: "123" == 123"

Но всё равно не работают нормально intersect, которые должны выбрать те объекты, которые удовлетворяют всем параметрам.

Присоединяюсь к комментариям под постом. Еще - если требуется сортировка, может вам подойдет метод sort? http://api.yandex.ru/maps/doc/jsapi/beta/ref/reference/GeoQueryResult.xml#sort