После некоторого анализа я обнаружил, что есть несколько вариантов.
Самый гибкий вариант - это опция от MrUpsidedown.Это показывает пунктирную линию, которая, кажется, работает довольно хорошо для небольших наборов данных.Кроме того, дополнительная настраиваемость с этой опцией является предпочтительной.Тем не менее, чем больше мой набор данных, тем больше улучшений производительности у меня было благодаря использованию комплексных маркеров.
Сравнение по примерно 2000 точкам:
Подход по кругу занял 3 секунды для рендеринга
Пользовательский символ, рисующий ромбы вместо кругов, занимал от 2 до 3 секунд.
Сложные маркеры, точечное изображение, упомянутое ниже, занимали меньшечем 1 секунда.
Подход, который я использовал со сложными маркерами, заключается в следующем: я использую простые точечные изображения размером 9x9 пикселей от Google.
Изображенияточки, которые я использовал в качестве маркеров, можно найти в другой теме stackoverflow здесь
Фактический код, который я использовал для рисования точки, будет добавлен внизу.Напомним, что я не определял активируемую область маркера, так как не собирался, чтобы он был неразрешимым.Надеюсь, это кому-нибудь поможет!
function drawMarkers(locations, color) {
let colors = ['green', 'yellow', 'purple', 'blue', 'red'];
if (colors.indexOf(color) < 0) {
console.log("Color ", color, " not supported");
return [];
} else {
let image = {
url: 'img/dot-' + color + ".png",
size: new google.maps.Size(6, 6),
// The origin for this image is (0, 0).
origin: new google.maps.Point(0, 0),
// The anchor for this image is the base of our point.
anchor: new google.maps.Point(3, 3)
};
let allMarkers = [];
for (let i = 0; i < locations.length; i++) {
let location = locations[i];
let marker = new google.maps.Marker({
position: location,
map: map,
icon: image,
zIndex: 5
});
allMarkers.push(marker);
}
return allMarkers;
}
}