В экосистеме HERE Maps API поиск географических объектов строится вокруг набора параметров, которые позволяют не просто получать список совпадений по тексту, но и управлять релевантностью результатов, их географическим контекстом, типами объектов и степенью детализации. В основе лежит Search API, который возвращает структурированные данные: адреса, POI (points of interest), координаты и метаданные.
Фильтрация в этом контексте — это не отдельный этап, а комбинация ограничений запроса, параметров смещения (bias), жёстких ограничений (restriction) и постобработки результата.
Любой запрос в HERE Search API интерпретируется в контексте:
Фильтрация начинается уже на уровне параметров запроса:
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const service = platform.getSearchService();
Bias не отсекает данные, но изменяет их релевантность, «подталкивая» выдачу к определённой области.
Наиболее часто используется at:
service.discover({
at: '49.8047,73.1094', // Караганда
q: 'restaurant'
}, result => {
console.log(result.items);
});
Особенности:
Фильтрация становится строгой при использовании bounding box:
service.discover({
in: '49.75,73.05;49.85,73.20',
q: 'cafe'
}, result => {
console.log(result.items);
});
Здесь результаты:
На практике используется гибрид:
at задаёт центр релевантностиin ограничивает областьservice.discover({
at: '49.8047,73.1094',
in: '49.75,73.05;49.85,73.20',
q: 'hotel'
}, console.log);
Search API поддерживает строгую классификацию результатов через категории.
service.discover({
at: '49.8047,73.1094',
categories: '100-1000-0000' // restaurants
}, console.log);
Категории позволяют:
Примеры категорий:
100-1000-0000 — рестораны500-5000-0000 — гостиницы400-4000-0000 — транспортПараметр q — основной фильтр по строке запроса.
service.discover({
at: '49.8047,73.1094',
q: 'sushi bar'
}, console.log);
Особенности:
В Search API доступна фильтрация по административным границам через дополнительные параметры или через bounding box.
Хотя прямой параметр country не всегда используется в Discover API, он реализуется через структурированные запросы и Geocode API.
Пример фильтрации через геокодинг:
service.geocode({
q: 'Almaty',
in: 'countryCode:KAZ'
}, console.log);
Это позволяет:
Радиусная фильтрация используется для создания локальных сценариев поиска.
service.discover({
at: '49.8047,73.1094',
limit: 50,
circle: '49.8047,73.1094;r=5000',
q: 'ATM'
}, console.log);
Смысл:
Параметр limit управляет объёмом выдачи:
service.discover({
at: '49.8047,73.1094',
q: 'pharmacy',
limit: 10
}, console.log);
Применение:
Несмотря на мощные серверные фильтры, часто используется клиентская обработка:
service.discover(params, result => {
const filtered = result.items.filter(item => {
return item.address.countryCode === 'KAZ' &&
item.distance < 3000;
});
console.log(filtered);
});
Типичные критерии:
countryCode)distance)Каждый результат содержит структурированные поля:
titlepositionaddresscategorydistanceПример использования фильтрации по категории:
result.items.filter(item =>
item.categories?.some(c => c.id.startsWith('100'))
);
Это позволяет:
В чистом Search API нет прямого оператора NOT, но исключение реализуется логикой клиента:
const excludedCategories = ['hospital', 'school'];
const filtered = result.items.filter(item => {
return !item.categories.some(c =>
excludedCategories.includes(c.name)
);
});
Используется для:
Хотя фильтрация и сортировка тесно связаны, в HERE API сортировка часто управляется автоматически, но может корректироваться:
Клиентская сортировка:
const sorted = result.items.sort((a, b) =>
a.distance - b.distance
);
Реальные приложения используют сразу несколько уровней:
service.discover({
at: '49.8047,73.1094',
in: '49.75,73.05;49.85,73.20',
q: 'coffee',
limit: 20
}, result => {
const final = result.items
.filter(i => i.distance < 2000)
.filter(i => i.categories?.length > 0);
console.log(final);
});
Такая схема объединяет:
В автодополнении также применяются фильтры:
service.autosuggest({
at: '49.8047,73.1094',
q: 'rest',
limit: 5
}, console.log);
Дополнительные ограничения:
HERE Technologies использует внутреннюю модель ранжирования, которая учитывает:
Фильтрация в этом случае — это не только техническое ограничение, но и управление весами в ранжировании результатов.
Типичные проблемы:
Корректная стратегия всегда сочетает: