2016-06-21 3 views
0

У меня есть широкая карта с очень маленьким зумом, поэтому части земли появляются несколько раз. Если добавить обычный маркер, он получает умножается так, что каждое место в видовом имеет тот же маркер на него:Карты Google: отображать пользовательский маркер несколько раз на широкой карте

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map, 
    title: 'Hello World!' 
}); 

https://jsfiddle.net/L50thpqr/

Однако, когда я использую пользовательский маркер с путем, это только появляется один раз в середине:

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map, 
    title: 'Hello World!', 
    icon: { 
     fillOpacity: .75, 
     scale: 1, 
     strokeColor: 'black', 
     strokeWeight: 1, 
     scale: .8, 
     fillColor: "#fffb70", 
     path: "M 0,-8.55 -8.55,8.55 8.55,8.55 Z" 
    } 
}); 

https://jsfiddle.net/q14s2rLk/

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

ответ

0

Один из упрощенных способов заключается в рендеринге маркеров на сервере. Google предоставляет две службы, встроенные в API, которые делают это легко: FusionTablesLayer и KmlLayer. Создание пользовательского наложения из изображений, которые предварительно визуализируются или визуализируются «на лету».

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

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

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

вы можете использовать Grid-vased Clustering или Distance-based Clustering. Кластеризация на основе гридов работает путем деления карты на квадраты определенного размера (размер изменяется при каждом масштабировании), а затем группировка маркеров в каждый квадрат сетки. Кластеризация на основе расстояния похожа на кластеризацию на основе сетки, за исключением того, что вместо создания кластеров с фиксированными квадратными границами кластеры создаются на основе расстояния между маркером и центроидом кластеров. Кластерные центроиды обычно определяются алгоритмически посредством итерации существующих мест маркеров.

Или вы можете добавить свой маркер на карте Google, используя массив, проверить это: Adding multiple custom markers to a google map using an array

+0

Я не думаю, что это решает мою проблему. Я не пытаюсь добавить несколько карт на карту. Я просто хочу, чтобы мой один пользовательский маркер вел себя как маркер по умолчанию. – Sebastian

Смежные вопросы