Я бы предложил создать список google.maps.Data.Feature
объектов вместо google.maps.Data.Point
объектов.Data.Feature
может включать в себя геометрию, которая является экземпляром google.maps.Data.Point
в вашем случае, идентификатор, который может быть строкой или числом, и свойства, в которые можно поместить пары имя-значение.
https://developers.google.com/maps/documentation/javascript/reference/3/data#Data.Feature
Наличие свойств в функции делает трюк.Вы можете применить функцию стилей для вашего слоя данных, которая считывает свойство объекта (значок в вашем случае) и возвращает соответствующий стиль.Функция стиля будет применена, когда вы добавите элемент к слою данных.
Посмотрите на следующий пример кода, schoolLayer.setStyle()
является наиболее важной частью
var map;
function initMap() {
var schools = [
new google.maps.Data.Feature({
geometry: new google.maps.Data.Point({lat: 41.384301, lng: 2.173792}),
id: 1,
properties: {
"icon": "http://maps.google.com/mapfiles/kml/paddle/blu-blank.png"
}
}),
new google.maps.Data.Feature({
geometry: new google.maps.Data.Point({lat: 41.384897, lng: 2.176656}),
id: 2,
properties: {
"icon": "http://maps.google.com/mapfiles/kml/paddle/pink-blank.png"
}
}),
new google.maps.Data.Feature({
geometry: new google.maps.Data.Point({lat: 41.386756, lng: 2.175268}),
id: 3,
properties: {
"icon": "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png"
}
})
];
map = new google.maps.Map(document.getElementById('map'), {
zoom: 17,
center: {lat: 41.385064, lng: 2.173403}
});
var schoolLayer = map.data;
schoolLayer.setStyle(function(feature){
return {
icon: feature.getProperty("icon"),
title: "" + feature.getId()
};
});
for (school of schools) {
schoolLayer.add(school);
}
}
#map {
height: 100%;
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
<div id="map"></div>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDztlrk_3CnzGHo7CFvLFqE_2bUKEq1JEU&callback=initMap">
Этот пример также можно найти на jsfiddle: https://jsfiddle.net/xomena/tLsjkowp/
Надеюсь, это поможет!