2017-05-27 31 views
-1

我出口谷歌地圖的路線爲KML,並通過與雜食讀它們,並將它們添加到地圖Mapbox地圖上顯示,Mapbox:在單張雜食KML層過濾掉標記

的谷歌KML每個店作爲兩個路線地方(起點和終點)和一個LineString(路線)。在Mapbox中我只想顯示路線,也就是以某種方式過濾出標記。我從我自己的數據庫中顯示標記,Google標記混亂了它。

這是我的代碼。我改變LineStrings的樣式只是爲了表明我可以,但不知道用什麼魔法調用來顯示點。 謝謝。

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); 

回答

0

歡迎來到SO!

許多可能的解決方案:

  • 大部分直接從你提供的代碼前,只需使用removeLayer方法對你runLayer圖層組,當你得到一個'Point'功能。

  • 清潔溶液。將過濾出的那些特徵之前他們甚至轉換成單張的層,通過作爲omnivore.kml第三參數傳遞的custom GeoJSON Layer Group,具有指定的filter選項:

var customLayer = L.geoJSON(null, { 
    filter: function(geoJsonFeature) { 
    // my custom filter function: do not display Point type features. 
    return geoJsonFeature.geometry.type !== 'Point'; 
    } 
}).addTo(map); 

var runLayer = omnivore.kml('data/xxxx.kml', null, customLayer); 

您也可以使用和/或onEachFeature選項customLayer直接在您的LineString上應用所需的樣式。

+0

謝謝主席先生(或女士:) 解決一個工作(!) 但正如你所說的解決方法二是冷卻器,和它的工作也......之後我改變了「L.geoJSON」到「L.geoJson 」。此外,「.addTo(map)」是不必要的,因爲我們將它傳遞給Omnivore。 我曾嘗試過,但未能將它們過濾到地圖中,但它更好地過濾導入,而不是添加它們。 再次感謝! – user2690950

+0

'L.geoJson'用於Leaflet 0.x.您應該考慮升級到Leaflet 1.x. – ghybs

+0

謝謝 - 版本v0.2.0用於我見過的所有Mapbox示例,所以我不知道更好的... – user2690950