#javascript #leaflet
#javascript #листовка
Вопрос:
привет, я создаю полилинию листовки с помощью latlngs[]. в начале wat мы передаем [lat,long] в latlngs[], но я хочу передать третью строку аргумента DateTime, и я хочу показывать в промежутке, когда точка в полилинии наведена мышью.
что-то вроде:
let latlangs = [
[12.12, 12.12, '2020/12/12 - 10:30'],
[15.15, 15.15, '2020/10/10 - 12:30']
];
let antPolyline = new L.Polyline.AntPath(latlngs, options);
antPolyline.on('mouseover', e => {
$('span').html('third argument string dateTime');
});
Комментарии:
1. что
new L.Polyline.AntPath(latlngs, options);
возвращает, потому что я знаю, как обычно делать то, что вы имеете в виду, но как извлечь из этого определенную часть, неизвестно, поскольку мне это неизвестно: {2. то же, что и полилиния листовки по умолчанию, она возвращает слой полилинии, я думаю
Ответ №1:
Вы можете получить значение, в котором курсор находится над полилинией, а затем получить ближайшую точку с информацией:
var latlngs = [
[19.04469, 72.9258, '2020/12/12 - 09:20'],
[19.08469, 72.9058, '2020/12/13 - 10:30'],
[20.13469, 72.9258, '2020/12/12 - 11:40']
]
var polyline = L.polyline(latlngs).addTo(map) //working same as ant polyline
polyline.on('mouseover',(e)=>{
var point = findClosestPoint(e.latlng);
var text = point[2];
console.log(text)
document.getElementById('testspan').innerHTML = text;
})
function findClosestPoint(latlng){
var closestPoint = null;
var distance = 0;
latlngs.forEach((point)=>{
if(closestPoint == null || distance > L.latLng([point[0],point[1]]).distanceTo(latlng)){
distance = L.latLng([point[0],point[1]]).distanceTo(latlng);
closestPoint = point;
}
});
return closestPoint;
}
Комментарии:
1. я надеюсь, что я пропустил что-то в документации, чего нет у других пользователей, но я вижу, что нет возможности вернуть одиночный latlng[] для доступа к третьей строке. ваше решение сработало отлично, и спасибо за ваше время.
Ответ №2:
Вы просите прослушать событие наведения курсора мыши на определенный элемент HTML для отображения некоторого текста .. Хорошо, это помогает?
let lantlangs = [
[12.12, 12.12, '2020/12/12 - 10:30'],
[15.15, 15.15, '2020/10/10 - 12:30']
];
let antPolyline = new L.Polyline.AntPath(latlngs, options);
//now to do what you asked
var mySpan=document.getElementById('mySpan')
mySpan.onmouseover=function(){mySpan.innerHTML=antPolyline[2]}
//the antPolyline[2] is my guess of what data you want displayed and I'm also assuming that the id of this specific span is 'mySpan'