Кластеризация результатов геокодирования средствами geoQuery
В выборку GeoQueryResult можно добавить результаты геокодирования и поиска по адресам. Далее можно использовать стандартные методы GeoQueryResult, например чтобы определить, попадает ли адрес в заданную область, или найти ближайший объект к точке.
Пример показывает, как с помощью applyBoundsToMap установить границы видимой области карты, чтобы в нее попали все объекты выборки. С помощью метода clusterize объекты можно добавлять в кластеризатор.
index.html
apply_bounds_and_clusterize.js
<!DOCTYPE html>
<html>
<head>
<title>
Кластеризация результатов геокодирования средствами geoQuery
</title>
<meta
http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
<!--
Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
-->
<script
src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=<ваш API-ключ>"
type="text/javascript"
></script>
<script
src="apply_bounds_and_clusterize.js"
type="text/javascript"
></script>
<style>
body,
html {
font-family: Arial;
font-size: 11pt;
padding: 0;
margin: 0;
width: 100%;
height: 95%;
background-color: white;
}
p {
padding: 10px;
}
#map {
width: 100%;
height: 90%;
}
</style>
</head>
<body>
<p>Показаны кластеризованные результаты по запросу "Арбат"</p>
<div id="map"></div>
</body>
</html>
function init() {
var myMap = new ymaps.Map(
"map",
{
center: [55.73, 37.75],
zoom: 10,
},
{
searchControlProvider: "yandex#search",
}
);
// Сделаем запрос на геокодирование, а затем спозиционируем карту, чтобы
// все объекты попадали в видимую область карты и коэффициент масштабирования был
// максимально возможным.
var result = ymaps
.geoQuery(ymaps.geocode("Арбат"))
.applyBoundsToMap(myMap, { checkZoomRange: true });
// Откластеризуем полученные объекты и добавим кластеризатор на карту.
// Обратите внимание, что кластеризатор будет создан сразу, а объекты добавлены в него
// только после того, как будет получен ответ от сервера.
myMap.geoObjects.add(result.clusterize());
}
ymaps.ready(init);