Как сгруппировать отметки на картах

Если вам нужно показать много географической информации в доступной форме, вы, вероятно, воспользуетесь картой. Но она должна быть представлена ​​таким образом, чтобы пользователи могли легко и быстро увидеть общую картину и, при желании, получить подробную информацию. Сотни точечных маркеров, сложенные вместе, могут стать препятствием.

Скажи простатиту "НЕТ"! Гарантированная победа над простатитом!
9 часов назад
Это находка! Вырабатывает иммунитет к 100% известных паразитов.
6 часов назад

В этом посте мы расскажем, как использовать библиотеку JavaScript для группировки токенов, чтобы вы могли представлять одну и ту же информацию сгруппированным образом, не показывая, что все токены перекрывают друг друга. Мы также немного объясним, как это работает, чтобы помочь вам лучше понять, как настроить группировку токенов в ваших собственных проектах.

Зачем вообще нужна группировка маркеров?

Чтобы понять, давайте взглянем на эту карту Новой Зеландии и Австралии, на которой разбросана группа маркеров:

Хотя мы добавили метку для каждого маркера, многие из них настолько близки, что перекрывают друг друга. Мест меньше 25, но они слишком близко друг к другу, чтобы показать на карте без перекрытия.

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

Группировка маркеров — удобный инструмент для визуального объединения маркеров, он облегчает клиентам чтение карты в целом. Группирует маркеры рядом друг с другом на карте в кластер, который отображается в виде одного значка.

Включить группировку маркеров на карте

Вы можете добавить кластеризацию токенов с помощью нескольких дополнительных строк JavaScript. В этом примере показано, как это сделать на веб-картах, но аналогичный инструмент есть на платформе Android Maps и в SDK платформы Google Maps. Чтобы создать кластер маркеров, сначала необходимо подумать о том, как создавать некластерные маркеры. При добавлении на карту обычных маркеров код будет выглядеть так:

Имея десятки и более тегов, маловероятно, что вы сможете создавать их один за другим со своими собственными переменными. Однако этих двух тегов достаточно, чтобы увидеть кластеризацию в действии.

Вам нужно внести два изменения в код карты, чтобы включить кластеризацию токенов. Сначала загрузите библиотеку кластеризации токенов. Для производственного использования загрузите его с GitHub и разместите JavaScript на своем собственном сервере. Для целей этой демонстрации мы загрузим его со страницы документации платформы Google Maps.

Затем переместите карту и маркеры в библиотеку кластеризации, добавив эти строки под переменными маркера:

// создаем массив всех ваших маркеров

const markers = [marker1, marker2];

// Путь для включения значков кластера (1.png, 2.png и т. д.)

const imagePath = «https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m»;

// Включить группировку маркеров для этой карты и этих маркеров

const markerClusterer = новый MarkerClusterer (карта, маркеры,);

Также для производственных приложений вам потребуется разместить образы кластеров на своих серверах. В этом примере будет загружен файл m1.png, поскольку ему нужен только минимальный размер кластера.

Когда вы создаете экземпляр MarkerClusterer, вы передаете переменную карты, массив маркеров и путь к изображению. После принятия информации в библиотеке отображается значок кластера с количеством доступных в кластере точек.

После нажатия на иконку кластера карта увеличивается до уровня, на котором видны оба маркера

После удаления на несколько уровней значок кластера возвращается вместо двух маркеров, когда карта находится на уровне, где они могут перекрываться.

У кого болят суставы и спина: читайте...! Артрит можно вылечить за 7дней.
10 часов назад
Болят КОЛЕНИ И СУСТАВЫ? Эта едкая мазь лечит суставы за 3 дня.
9 часов назад

Это руководство по кластеру токенов содержит полную информацию и примеры с высокими оценками.

Как работает кластеризация маркеров

Библиотека кластеризации маркеров является частью инструментов сопоставления с открытым исходным кодом на GitHub. Вы можете получить доступ ко всему коду и даже внести свои собственные изменения по мере необходимости. Давайте посмотрим, как алгоритм работает в целом.

Во-первых, алгоритм разбивает карту на сетку, каждая секция которой по умолчанию имеет размер 60 × 60 пикселей. Используя приведенный выше пример перекрытия маркеров, это можно визуализировать следующим образом:

Сетка на самом деле не будет точно такой же, как показано выше, поскольку она основана на большей части разметки. Первый маркер становится центром первого сектора. Дополнительные маркеры в этом секторе будут добавлены в кластер для этого сектора, затем центр кластера будет обновлен на основе среднего значения всех его маркеров. Если маркер потенциально может быть частью более чем одного кластера, он будет добавлен в ближайший кластер на основе расстояния между координатами маркера.

Стандартные настройки алгоритма охватывают большинство вариантов использования, но поскольку код полностью открыт, вы можете вносить любые необходимые изменения.

Настройте кластеры под свои нужды

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

Самый простой способ сопоставить кластер с собой — использовать собственные значки. Для простого примера кластеризации мы передали параметр imagePath. Библиотека кластера назначит номер (1-5) в конце пути, за которым следует расширение файла (по умолчанию .png).Вы можете использовать другой тип файла, используя параметр imageExtension. Обратите внимание, что прозрачные значки лучше смотрятся на карте.

По умолчанию для создания кластера необходимы только два маркера. Вы можете использовать параметр MinimumClusterSize, чтобы изменить этот параметр. Увеличение этого числа может привести к перекрытию маркеров, но вы также можете установить порог перекрытия.

Вот еще несколько способов работы с библиотекой

gridSize: количество пикселей в сетке кластера.

zoomOnClick: увеличивает кластер при нажатии.

maxZoom: максимальный уровень масштабирования, прежде чем всегда будут отображаться обычные маркеры.

style: массив объектов для каждого типа кластера, содержащий textColor, textSize и другие функции кластера.

Например, вы можете использовать все вышеперечисленные параметры вместе следующим образом.

// Параметры для передачи в кластер маркеров

const clusterOptions = imagePath: «https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m»,

размер сетки: 30,

zoomOnClick: ложь,

максимальное увеличение: 10,

>
;

// Добавить кластер маркеров для управления маркерами.

const markerClusterer = новый MarkerClusterer (карта, маркеры, clusterOptions);

// Изменяем стили после создания кластера

const style = markerClusterer.getStyles();

для (пусть i = 0; i
<стили.длина; я ++) стили [i] .textColor = "красный";
стили[i].textSize = 18;

>

Например, вы можете использовать все вышеперечисленные параметры вместе следующим образом:

Как вы заметили, отличий 2: больше кластеров (из-за меньшего размера сетки), цифры красные и немного крупнее.

Щелчок по кластеру не изменит масштаб, но вы можете увеличить его вручную. Отдельные маркеры будут отображаться быстрее, размер сетки означает, что маркеры с меньшей вероятностью перекрываются. После достижения уровня масштабирования 10 (карта начинается с уровня 3) все маркеры будут отражены, независимо от того, насколько близко они находятся.

На данный момент вы перешли от карты с нанесенными на нее маркерами к элегантному кластеру. Используйте эти новые знания, чтобы предоставить вашим пользователям лучший опыт работы с картой с большим количеством маркеров. Вы можете найти еще больше способов настроить библиотеку кластеризации токенов, прочитав ее код.

Чтобы реализовать эти и другие функции, свяжитесь с нашей командой платформы Google Maps для получения совета или технической помощи. Кроме того, Cloudfresh предоставляет возможность безналичной оплаты для компаний со всей необходимой бухгалтерской и юридической документацией.

Эффективная борьба с псориазом. Ощутимый результат за 5 дней!
10 часов назад
Преобрази свой образ модными костюмами из Франции! Успей купить со скидкой!
6 часов назад

Читайте также