Как увеличить масштаб ограничительной рамки карт Azure в событии щелчка кластера? - PullRequest
0 голосов
/ 12 ноября 2018

Источник данных в Azure Maps может кластеризовать точечные объекты (булавки) в пределах определенного радиуса.Когда происходит событие щелчка на таком кластере, я хотел бы сбросить свой ограничивающий прямоугольник в область, представленную кластером, и увеличить масштаб, чтобы показать отдельные контакты внутри кластера.

С помощью Google Maps вы можете настроить поведение кластера по умолчанию для автоматического увеличения при нажатии.Эта функция также была относительно легко реализована в старом Bing Maps API .Как добавить эту функцию в Azure Maps без громоздкого JavaScript-кода?

1 Ответ

0 голосов
/ 13 ноября 2018

Действительно, кажется, что Azure Maps не поддерживает его напрямую, можно рассмотреть следующий подход:

Как только мы щелкнем слой, event возвращает положение пикселя целевого объекта вместе сдругие свойства.Затем min и max координаты окружности кластера определяются с помощью atlas.Map.pixelsToPositions function:

const coordinates = e.map.pixelsToPositions([
          [e.pixel[0] + (clusterRadius*2), e.pixel[1] + (clusterRadius*2)],
          [e.pixel[0] - (clusterRadius*2), e.pixel[1] - (clusterRadius*2)],
        ]);            

Затем границы области, которая может содержать штыри внутри пузырька кластера, определяются с помощью atlas.data.BoundingBox.fromPositionsfunction :

const bounds = atlas.data.BoundingBox.fromPositions(coordinates);

И, наконец, окно просмотра карты установлено:

 map.setCamera({
          bounds: bounds,
          padding:0
        }); 

Вот демо для справки

...