将 KML 文件添加到 leaflet-draw drawnItems
Adding KML file to leaflet-draw drawnItems
我正在尝试将 KML 文件导入到传单中,并使其可编辑以用于传单绘制。我正在使用 leaflet-omnivore 导入 KML。
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js'></script>
var kmlFile = omnivore.kml('Point.kml')
如果我将 kmlFile 添加到地图中,它会完美运行,但为了使形状可编辑,我需要将图层添加到 drawnItems
var drawnItems = new L.FeatureGroup();
omnivore.kml('Point.kml').addTo(drawnItems);
但是我收到一条错误消息:
TypeError: i.editing is undefined.
当我尝试访问图层坐标以自己创建对象并将它们添加到 drawnItems 时,我似乎无法这样做,因为我找不到访问对象坐标的方法。
当我尝试访问图层时,它们显示为空
console.dir(omnivore.kml('Point.kml').getLayers());
但是当我检查 omnivore kml 对象时,我可以看到 _layers 包含对象和坐标。
console.dir(omnivore.kml('Point.kml'));
但是执行getLayers方法时,layers数组显示为空
有什么建议吗?
请注意Leaflet omnivore插件提供异步方法,因为它必须先下载文件才能解析文件并创建传单层。
JavaScript中关于异步任务的详细介绍,请参考:How do I return the response from an asynchronous call?
这就是为什么当您尝试立即阅读时您的图层组看起来是空的。
如果您只需要在数据正确下载并转换为 Leaflet 图层后执行某些操作,请使用 .on("ready", fn)
语法,as explained in the plugin README.
至于将生成的层添加到特征组中(供以后与 Leaflet.draw 插件一起使用),请注意,您可以直接将特征组提供为 3rd argument of omnivore.kml()
。
我正在尝试将 KML 文件导入到传单中,并使其可编辑以用于传单绘制。我正在使用 leaflet-omnivore 导入 KML。
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js'></script>
var kmlFile = omnivore.kml('Point.kml')
如果我将 kmlFile 添加到地图中,它会完美运行,但为了使形状可编辑,我需要将图层添加到 drawnItems
var drawnItems = new L.FeatureGroup();
omnivore.kml('Point.kml').addTo(drawnItems);
但是我收到一条错误消息:
TypeError: i.editing is undefined.
当我尝试访问图层坐标以自己创建对象并将它们添加到 drawnItems 时,我似乎无法这样做,因为我找不到访问对象坐标的方法。
当我尝试访问图层时,它们显示为空
console.dir(omnivore.kml('Point.kml').getLayers());
但是当我检查 omnivore kml 对象时,我可以看到 _layers 包含对象和坐标。
console.dir(omnivore.kml('Point.kml'));
但是执行getLayers方法时,layers数组显示为空
有什么建议吗?
请注意Leaflet omnivore插件提供异步方法,因为它必须先下载文件才能解析文件并创建传单层。
JavaScript中关于异步任务的详细介绍,请参考:How do I return the response from an asynchronous call?
这就是为什么当您尝试立即阅读时您的图层组看起来是空的。
如果您只需要在数据正确下载并转换为 Leaflet 图层后执行某些操作,请使用 .on("ready", fn)
语法,as explained in the plugin README.
至于将生成的层添加到特征组中(供以后与 Leaflet.draw 插件一起使用),请注意,您可以直接将特征组提供为 3rd argument of omnivore.kml()
。