Я пытаюсь реализовать OverlappingMarkerSpiderfier , чтобы просмотреть несколько маркеров пользователя, когда они находятся в одном и том же месте. С помощью следующего кода все работает нормально:
function initMap() {
var osterreich = {lat: 47.7059673, lng: 13.2364467};
var map = new google.maps.Map(document.getElementById('countrymap'), {
zoom: 7,
center: osterreich,
streetViewControl: false,
mapTypeControl: false,
scaleControl: false,
fullscreenControl: false,
draggableCursor: 'pointer',
gestureHandling: 'greedy'
});
var oms = new OverlappingMarkerSpiderfier(map, {
markersWontMove: true,
markersWontHide: true,
basicFormatEvents: true,
keepSpiderfied: true,
legWeight: 0,
nearbyDistance: 0.001
});
if(markerpositions !== null){
for(var i=0;i<markerpositions.length;i++){
var position = markerpositions[i];
var positiondata = position.split(",");
var lat = parseFloat(positiondata[0]);
var lng = parseFloat(positiondata[1]);
var markerposition = {lat: lat, lng: lng};
var marker = new google.maps.Marker({
position: markerposition,
map: map,
icon: jobpinlink[i],
draggable: false
});
oms.addMarker(marker);
}
}
Теперь я хочу другую иконку для маркеров, которые являются «паутинными». Таким образом, пользователь может визуально распознать, что существует более одного маркера. Я попытался понять это с помощью многих вариаций кода из документации.
Моя проблема в том, что "сборка" google-maps из документации отличается от моей, и мои навыки работы с javascript слишком слабые. Я не знаю, что адаптировать.
oms.addListener('format', function(marker, status) {
var iconURL = status == OverlappingMarkerSpiderfier.markerStatus.SPIDERFIED ? 'pin_spiderable.png' :
status == OverlappingMarkerSpiderfier.markerStatus.SPIDERFIABLE ? 'pin_spiderable.png' :
status == OverlappingMarkerSpiderfier.markerStatus.UNSPIDERFIABLE ? 'pin_spiderable.png' :
null;
var iconSize = new google.maps.Size(23, 32);
marker.setIcon({
url: iconURL,
size: iconSize,
scaledSize: iconSize // makes SVG icons work in IE
});
});
Когда я копирую Код сверху после var oms
, это делает странные вещи :). Значки загружаются, но только после одного нажатия на маркер, а не при первом посещении, хотя marker.setIcon
выдает ошибку Uncaught InvalidValueError: setIcon: not a string; and no url property; and no path property
.
И я хочу изменить только значок spiderable-marker . Когда я оставляю только status == OverlappingMarkerSpiderfier.markerStatus.SPIDERFIABLE ? 'pin_spiderable.png' : null;
в var iconURL , смена значка не происходит, даже при втором щелчке.
С уважением, Стефан