Так что на моем веб-сайте у меня есть этот код
<script>
var HydrantIcon = L.icon({
iconUrl: 'img/hydrat.png',
iconSize: [2, 39], // size of the icon
popupAnchor: [0, -14] // point from which the popup should open relative to the iconAnchor
});
L.mapbox.accessToken = '';
var options = {
minZoom: 14,
zoomControl: false,
maxZoom: 18
};
var map = L.mapbox.map('map', undefined, options);
map.setView([52.413300, 8.869450], 16)
var markerpositions;
map.addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/satellite-streets-v9'));
// L.Control.geocoder().addTo(map);
L.marker([52.41401117, 8.86953413], {icon: HydrantIcon}).addTo(map).bindPopup("Hydrant 13");
L.marker([52.41069629842804, 8.868584632873537], {icon: HydrantIcon}).addTo(map).bindPopup("Hydrant 2");
L.marker([52.40941419180167, 8.866181373596193], {icon: HydrantIcon}).addTo(map).bindPopup("Hydrant 3");
var mark1 = [
[52.414737, 8.868510],
[52.413151, 8.872171],
[52.407455, 8.865287],
[52.409102, 8.861021]
];
var polygon = L.polygon(mark1, {color: 'blue'}).addTo(map);
var data = <?php echo JSON_encode($geojson); ?>;
var geoJsonLayer = L.geoJson(false, {onEachFeature: addMyPopup}).addTo(map);
var hydrat1 = [52.41401117, 8.86953413];
var hydrat2 = [52.41069629842804, 8.868584632873537];
var hydrat3 = [52.40941419180167, 8.866181373596193];
function addMyPopup ( feature, layer) {
var triggerOnce = true;
if ((layer.getLatLng().distanceTo(hydrat1) < 5)
||(layer.getLatLng().distanceTo(hydrat2) < 5)
||(layer.getLatLng().distanceTo(hydrat3) < 5)) {
if(triggerOnce == true){
var http = new XMLHttpRequest();
var url = "https://maker.ifttt.com/trigger/vandingsmaskine/with/key/";
http.open("POST", url, true);
http.send(JSON.stringify({"value1": "Maskine 1"}));
triggerOnce == false;
}
layer.bindPopup("My ID is: " + feature.properties.id);
}
}
function requestGeoJson(){
fetch('https:///admin/RealtimeTest/get-features')
.then(function(response){
return response.json();
})
.then(function(json){
geoJsonLayer.clearLayers().addData(json);
setTimeout(requestGeoJson, 5000);
});
};
requestGeoJson();
Позиция слоя Geo Json получается из позиций из базы данных Mysql, и если расстояние слоя меньше 5 метров. делает веб-запрос. Моя проблема в том, что это работает только до тех пор, пока пользователь находится на сайте. Я пытаюсь сделать так, чтобы всегда проверялось ли расстояние между слоем Geo Json менее 5 метров до одной из точек "гидрата". Так что, вероятно, с некоторыми всегда на node.js сценарий.