Leaflet Mapbox:过滤出传单杂食KML层中的标记

Leaflet Mapbox:过滤出传单杂食KML层中的标记,leaflet,kml,mapbox,Leaflet,Kml,Mapbox,我将Google Directions路线导出为KML,并通过使用Omnivore读取并将其添加到地图中,将其显示在地图盒地图上 Google KML将每条路线存储为两个位置(起点和终点)和一个行字符串(路线)。在Mapbox中,我只想显示路线,即以某种方式过滤掉标记。我在自己的数据库中显示标记,谷歌标记把它弄得乱七八糟 这是我的密码。我更改了线串的样式,只是为了表明我可以,但不知道要做什么魔术调用才能不显示点。 谢谢 欢迎来到SO 许多可能的解决办法: 与您提供的代码相比,当您获得一个“点”

我将Google Directions路线导出为KML,并通过使用Omnivore读取并将其添加到地图中,将其显示在地图盒地图上

Google KML将每条路线存储为两个位置(起点和终点)和一个行字符串(路线)。在Mapbox中,我只想显示路线,即以某种方式过滤掉标记。我在自己的数据库中显示标记,谷歌标记把它弄得乱七八糟

这是我的密码。我更改了线串的样式,只是为了表明我可以,但不知道要做什么魔术调用才能不显示点。 谢谢

欢迎来到SO

许多可能的解决办法:

  • 与您提供的代码相比,当您获得一个
    “点”
    功能时,只需使用
    运行层
    层组上的方法即可

  • 更干净的解决方案是,在将这些功能转换为传单层之前,通过带有指定选项的
    omnivore.kml
    的passed as 3rd参数过滤掉这些功能:

var customLayer=L.geoJSON(空{
过滤器:函数(geoJsonFeature){
//我的自定义过滤器功能:不显示点类型要素。
返回geoJsonFeature.geometry.type!=='Point';
}
}).addTo(地图);
var runLayer=omnivore.kml('data/xxxx.kml',null,customLayer);

您也可以使用
customLayer
上的和/或选项直接将所需样式应用于您的线条。

谢谢先生(或女士:)解决方案一有效(!)但正如您所说,解决方案二更酷,而且也有效。。。在我将“L.geoJSON”更改为“L.geoJSON”之后。另外,“.addTo(map)”是不必要的,因为我们正在将它传递给杂食者。我尝试过过滤它们,但在它们被添加到地图时失败了,但最好是在导入时过滤,而不添加它们。再次感谢<代码>L.geoJson用于传单0.x。你应该考虑升级到传单1.x。谢谢版本V0.2.0用于所有我看到的Mpbox例子,所以我不知道更好。
runLayer = omnivore.kml('data/xxxx.kml')
  .on('ready', function() {
    var llBnds = runLayer.getBounds();
    map.fitBounds(llBnds);

    this.eachLayer(function (layer) {

      if (layer.feature.geometry.type == 'LineString') {
        layer.setStyle({
          color: '#4E3508', 
          weight: 4
        });
      }

      if (layer.feature.geometry.type == 'Point') {
        //
        // Do something useful here to not display these items!!
        //
      }                 
    });
  })
  .addTo(map);