Leaflet 基于标记属性的草坪缓冲区样式设置

Leaflet 基于标记属性的草坪缓冲区样式设置,leaflet,switch-statement,buffer,Leaflet,Switch Statement,Buffer,正如标题所示,我正试图根据标记层的属性,在标记层周围设置草皮缓冲区的样式 我知道如何根据相同的层的属性设置层的样式,但是我在将样式连接到缓冲区时遇到了问题 我使用了两种方法,这两种方法都可以设置缓冲区的样式,但仍然无法连接到标记的属性信息(原因很明显,您将看到)。请忽略任何奇怪的格式,因为帖子重新安排了内容,我试图修复它们 尝试1: lyrHouses = { type: "FeatureCollection", features: [], }; // parse

正如标题所示,我正试图根据标记层的属性,在标记层周围设置草皮缓冲区的样式

我知道如何根据相同的层的属性设置层的样式,但是我在将样式连接到缓冲区时遇到了问题

我使用了两种方法,这两种方法都可以设置缓冲区的样式,但仍然无法连接到标记的属性信息(原因很明显,您将看到)。请忽略任何奇怪的格式,因为帖子重新安排了内容,我试图修复它们

尝试1:

lyrHouses = {
  type: "FeatureCollection",
  features: [],
};

// parse local CSV file

Papa.parse("src/data1/Houses.csv", {
  header: true,
  download: true,
  dynamicTyping: true,
  skipEmptyLines: true,
  complete: function (results) {
    results.data.forEach((house) => {
      feature = {
        type: "Feature",
        geometry: {
          type: "Point",
          coordinates: [house.Longitude, house.Latitude],
        },
        properties: {
          Location: house.Location,
          Type: house.Type,
        },
      };

      mrkHouses = L.geoJSON(feature).addTo(mymap);

      lyrHouses.features.push(feature);
      houseBuffer = turf.buffer(mrkHouses.toGeoJSON(), 3, {
        units: "kilometers",
      });
      lyrTest = L.geoJSON(houseBuffer, {
        style: function (feature) {
          switch (feature.properties.Type) {
            case "Duplex":
              return { color: "blue" };

            case "Quadplex":
              return { color: "yellow" };
          }
          return { color: "red" };
        },
      }).addTo(mymap);
    });
  },
});
尝试2:

function setBuffColor(d) {
  return d = 'Duplex' ? "green" :
    d = 'Quadplex' ? "red" :
    d = 'Semidetached' ? "blue" :
    '#FFED80';
}

function BuffStyle(feature) {
  return {
    color: setBuffColor(feature.properties.Type),
  };
}

为什么不这样呢

lyrTest = L.geoJSON(houseBuffer, { style: house.Type === 'Duplex' ? { color: "blue" } : (house.Type === 'Quadplex' ? { color: "yellow" } : { color: "red" }) });

houseBuffer
GeoJSON结构是否有任何
属性
?houseBuffer没有任何属性。这就是我遇到问题的地方,因为我需要从使用CSV解析属性更新的标记中获取它们。然而,@Anatoly Sukhanov解决方案似乎奏效了!谢谢你的回复,伊万。这让人惊讶。由于我仍在学习JS和传单,有时很难清楚地理解哪些变量是对象、层、geoJSON以及如何访问属性,同时保持正确的格式。幸运的是,我不会再犯这个特别的错误了。非常感谢。不客气。这可能是一个愚蠢的问题,但我如何从标记和缓冲区创建覆盖层,以便打开/关闭它们。我不知道该将哪个部分定义为新的覆盖?如果我没弄错的话,我会这么做-