在使用Leafletjs in Angular2http.get从URL调用JSON时,由于预先定义geoJSON图层,我无法为添加到地图的要素定义样式:

  // Add an empty layer to the map
  var geoJsonLayer1 = L.geoJSON().addTo(myMap);

  // Retrieve the geojson file
  http.get(myJsonURL)
  .map((response: Response) => {
      geoJsonLayer1.addData(response.json());
  }).subscribe();


geoJSON图层没有任何样式,其外观如下:

javascript - Angular2-Leafletjs:定义L.geoJSON()。addTo(myMap)的样式-LMLPHP

我预定义该层的原因是,我正在延迟加载JSON文件。我们可以按常规方式定义样式,如下所示:

L.geoJSON(myLines, {
    style: myStyle
}).addTo(map);


现在我的问题是,如何定义预定义图层的样式?

最佳答案

只是预定义没有数据的层…

var geoJsonLayer1 = L.geoJSON(null, {
  style: myStyle
}).addTo(map);

// Later on…
geoJsonLayer1.addData(response.json());


顺便说一句,您的屏幕快照看起来会显示缺少图标图像的标记(用于"Point"类型的功能)。在这种情况下,对于矢量形状(例如多边形,线串等),不要使用style选项,而应使用pointToLayer选项。

关于javascript - Angular2-Leafletjs:定义L.geoJSON()。addTo(myMap)的样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44414222/

10-12 00:21
查看更多