Google отображает несколько маркеров, сопоставленных с областью без координат - PullRequest
0 голосов
/ 08 января 2020

У меня очень странное требование от моего клиента, и я не уверен, достижимо ли оно.

Вот требование:
Клиент хочет отобразить карту, увеличенную до уровня страны, имеющую 4 фильтра. :
1. Раскрывающийся фильтр состояний, который должен заполнять города в фильтре городов, и карта должна увеличиваться до уровня штата
2. Раскрывающийся фильтр городов, который должен заполнять фильтр областей, а карта должна увеличиваться до уровень города
3. Выпадающий фильтр на основе области, который увеличит карту до уровня области.

Здесь все становится сложнее:
Как только карта масштабируется на уровне области, на ней должны отображаться все маркеры в этой области, и ни один из маркеров не имеет координат или адреса. Они относятся только к границам этой области и случайно / равномерно распределены в этой области, так что все маркеры видны.

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

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

Я думаю, что я все еще могу позаботиться о 4-м фильтре , но это 3-й фильтр, который сводит меня с ума.

Существует ли какой-либо механизм, с помощью которого мы можем разместить несколько маркеров (без координат или адреса, связанных только с границей области) внутри выделенной границы области и случайным / равномерным образом распределить в этой области, чтобы все маркеры видны?

Заранее спасибо.

1 Ответ

0 голосов
/ 08 января 2020

Один из способов решения этой проблемы - использование класса getCenter из LatLngBounds из карт Google. Для этого требуется получить координаты многоугольника откуда-то еще.

let coords = [{lat: -34, lng: 151},{lat: -34.5, lng: 151.5},etc]
let bounds = new google.maps.LatLngBounds();

coords.forEach(LatLng => bounds.extend(LatLng));

let center = bounds.getCenter(); //returns LatLng variable

Это также можно использовать для центрирования ваших карт Google в области с помощью функции fitBounds :

map.fitBounds(bounds);

Используя это, вы решите 2 задачи, масштаб и центр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...