Поиск мест и объектов в экосистеме HERE Technologies строится вокруг сервисов Geocoding & Search API и платформы HERE Places. Эти инструменты позволяют находить географические объекты, организации, адреса и точки интереса (POI), а также выполнять автодополнение запросов, уточнение результатов и работу с геоданными в интерактивных веб-картах.
Поисковая подсистема HERE разделяется на несколько ключевых уровней:
В JavaScript API (HERE Maps API for JavaScript) эти возможности
доступны через модуль H.places и REST-интерфейсы Geocoding
& Search v7.
В классическом варианте работы с картой используется SDK HERE Maps:
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js"></script>
Инициализация платформы:
const platform = new H.service.Platform({
apikey: 'YOUR_API_KEY'
});
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(
document.getElementById('map'),
defaultLayers.vector.normal.map,
{
center: { lat: 49.8, lng: 73.1 },
zoom: 12
}
);
Поисковые сервисы подключаются через объект
platform.getSearchService() или
platform.getPlacesService() в зависимости от версии
SDK.
Discover используется для текстового поиска мест, организаций и адресов:
const service = platform.getSearchService();
service.discover({
at: '49.8,73.1',
q: 'coffee'
}, (result) => {
console.log(result.items);
}, (error) => {
console.error(error);
});
q — поисковый запросat — центр поиска (координаты)limit — количество результатовlang — язык ответаКаждый элемент результата содержит:
Autosuggest применяется для интерактивного ввода текста в поисковой строке:
service.autosuggest({
at: '49.8,73.1',
q: 'rest'
}, (result) => {
console.log(result.items);
});
Особенности механизма:
Browse используется для структурированного поиска по типам объектов:
service.browse({
at: '49.8,73.1',
categories: '100-1000-0000',
limit: 10
}, (result) => {
console.log(result.items);
});
Категории в HERE имеют иерархическую структуру:
Такой подход позволяет ограничивать поиск строго определённым типом объектов.
Forward geocoding преобразует текстовый адрес в координаты:
service.geocode({
q: 'Satpayev Street 22, Karaganda'
}, (result) => {
console.log(result.items[0].position);
});
Результат содержит:
Reverse geocoding позволяет определить адрес по координатам:
service.reverseGeocode({
at: '49.806,73.085'
}, (result) => {
console.log(result.items[0].address);
});
Применяется в сценариях:
Каждое место в системе HERE имеет уникальный id, который
позволяет получать полную информацию:
service.lookup({
id: 'here:pds:place:123abc'
}, (result) => {
console.log(result);
});
Lookup используется для:
Результаты поиска обычно отображаются через маркеры:
result.items.forEach(item => {
const marker = new H.map.Marker(item.position);
map.addObject(marker);
});
Расширенные сценарии включают:
Поисковые запросы могут быть уточнены:
Пример ограничения области:
service.discover({
q: 'hotel',
in: 'bbox:49.7,73.0,49.9,73.2'
}, callback);
Поиск в HERE API основан на callback-модели, однако может быть обёрнут в Promise:
function searchPlaces(query) {
return new Promise((resolve, reject) => {
service.discover({ q: query, at: '49.8,73.1' },
resolve,
reject
);
});
}
Это позволяет интегрировать API в современные архитектуры:
Поисковая система оптимизирована для работы с высокой нагрузкой, однако следует учитывать:
Практическая рекомендация — использовать локальный кеш последних запросов.
Результаты поиска могут содержать расширенные поля:
Это позволяет строить полноценные интерфейсы каталогов без дополнительных API.
Поиск мест и объектов применяется в задачах:
Комбинация Discover, Autosuggest и Reverse Geocoding формирует базовый слой интерактивной геоинформационной системы, на котором строятся более сложные приложения с динамическими картами и контекстным поиском.