Добавьте буфер с turfjs на карту листовки, используя данные маршрута geojson из OSRM - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь поместить буфер turfjs поверх моей листовки с координатами, которые я получаю из листовки OSRM.

Что я хотел бы сделать, это загрузить маршрут, а затем поместить буфер вокругМаршрут скажем в пределах 10 метров.Если в каком-либо месте этого буфера нажата кнопка, покажите дорогу, по которой они идут, и инструкции, которые прилагаются к ней.

Мне удалось получить маршрут и сохранить маршрут в формате геойсон.Что я не могу сделать, так это добавить его на карту и добавить щелчок для загрузки информации о функции.

Код для получения маршрута:

function getroute() {
myroutewithout = L.Routing.control({
  waypoints: [
    L.latLng(window.my_lat, window.my_lng),
    L.latLng(window.job_p_lat, window.job_p_lng)
  ],show: true, units: 'imperial',
 router: L.Routing.mapbox('CODE-HERE'),
  createMarker: function(i, wp, nWps) {
    if (i === 0 || i === nWps + 1) {
      // here change the starting and ending icons
      return mymarker = L.marker(wp.latLng, {
        icon: window.operatorIcon
      });
    } else {
      // here change all the others
      return job_start = L.marker(wp.latLng, {
        icon: window.jobIcon
      }); 
    }
  }
}).addTo(map);

Код для сохранения каждого битаданные с маршрута:

myroutewithout.on('routeselected', function(e) {
  var coord = e.route.coordinates;
  var instr = e.route.instructions;
  L.geoJson(GeoJson(instr,coord), {onEachFeature: onEach}).addTo(map);
});

function GeoJson(instr,coord) {

  var formatter = new L.Routing.Formatter();
  var instrPts = {
    type: "FeatureCollection",
    features: []
  };
  for (var i = 0; i < instr.length; ++i) {
    var g = {
      "type": "Point",
      "coordinates": [coord[instr[i].index].lng, coord[instr[i].index].lat]
    };
    var p = {
      "instruction": formatter.formatInstruction(instr[i])
    };
    instrPts.features.push({
      "geometry": g,
      "type": "Feature",
      "properties": p
    });

      var point = turf.point([coord[instr[i].index].lng, coord[instr[i].index].lat]);
      var buffered = turf.buffer(point, 500, {units: 'meters'});



//addToMap
var addToMap = [point, buffered];
console.log(addToMap);

  }

  window.instrPts = instrPts;
  return instrPts

}

function onEach(feature, layer) {
  layer.bindPopup(feature.properties.instruction);

}

Итак, там я сохранил все, что мне кажется необходимым, но я заблудился относительно того, как разместить на карте и добавить функцию щелчка?

Любые идеи, пожалуйста, спасибо

...