Я давно сделал карту, используя буклет go, и мне помог друг, с которым я, к сожалению, больше не общаюсь. Он закодировал «калькулятор» для расчета стоимости очков при соединении двух маркеров вместе. (пример здесь: https://www.blackdesertfoundry.com/map> 4-я кнопка на боковой панели для активации калибровки c)
Теперь я добавляю дополнительный уровень маркеров и возникли некоторые трудности, потому что я хочу, чтобы само соединение осталось, и я соединил два маркера вместе, но я не хочу, чтобы линии между ними отображались при наведении курсора и соединении их вместе. Но только для этого одного слоя.
Это часть кода, в которой при наведении курсора на маркер добавляется строка предварительного просмотра.
this.createCalculationPreview = function(marker) {
if (self.isInCalculateMode) {
//imported marker graph node
if(!marker.hasOwnProperty("target")){
var key = marker.key;
}
//Otherwise assume leaflet-node
else{
var feature = marker.target.feature;
var key = feature.properties.type + "_" + feature.properties.identifier.toString();
}
var selectedMarker = markerGraph.allGraphMarkers[key];
var isMarkerAdd = false;
var changedPath = new Array();
if (selectedMarker !== undefined && !selectedMarker.isStartingPoint) {
//try to remove marker if it already was skilled before
if (selectedMarker.isSkilled) {
isMarkerAdd = false;
changedPath.push(selectedMarker);
//unskill temporarily so that we can calculate which markers would be removed
unskillMarker(selectedMarker);
//check whether the neighbours are still connected to starting points
selectedMarker.neighbours.forEach(function(neighbour) {
if (neighbour.isSkilled) {
if (!isMarkerConnectedToStartingPoint(neighbour, new Array())) {
var markersToUnskill = getSkilledMarkersConnectedToMarker(neighbour, new Array());
//unskill the markers because they're not connected to a starting point
markersToUnskill.forEach(function(marker) {
changedPath.push(marker);
});
}
}
});
//reskill marker
skillMarker(selectedMarker);
} else {
isMarkerAdd = true;
changedPath = getShortestPathToTarget(selectedMarker);
}
//refresh polylines
var polylinesCoordinates = createPolylinesCoordinatesForChangedMarkers(changedPath);
polylinesCoordinates.forEach(function(coordinates) {
var leafletPolyline = L.polyline(coordinates, {
color: isMarkerAdd ? "limegreen" : "red",
opacity: 1,
smoothFactor: 1,
weight: 4
});
leafletPolyline.addTo(map);
temporaryPolylines.push(leafletPolyline);
});
};
Я думал о добавлении оператора if, который проверяет текущий наведенный маркер, и если он соответствует feature.properties.type (или принадлежит определенному слою маркеров), он ничего не сделает. Но я просто не могу понять, как проверить текущий зависший маркер. Есть совет?