Сценарий листовки, проверяющий местоположение точки в al oop и отправляющий веб-запрос при изменении расстояния - PullRequest
1 голос
/ 12 января 2020

Так что на моем веб-сайте у меня есть этот код

<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 сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...