Azure Maps(带有 Turf.js)- 无法从 SymbolLayer 获取 'points'

Azure Maps (with Turf.js) - can't get the 'points' from the SymbolLayer

我为此搜索了几个小时,终于寻求帮助。

我正在使用 Azure 地图创建地图。我创建了一个绘图区 select 工具。它在 Azure 演示中运行良好,因为他们创建了一个名为 'points' 的变量,然后只分配了一些随机特征和位置。但是......我正在使用我的数据:

datasource.importDataFromUrl(geoJsonFeed.url)

我在头部设置了所有 JS 和 CSS(即核心 Azure Maps JS/CSS 和 atlas-drawing.min.cs + atlas-drawing.min.js + turf.js)

我一直使用的主要参考是:https://azuremapscodesamples.azurewebsites.net/

具体来说…… https://azuremapscodesamples.azurewebsites.net/Drawing%20Tools%20Module/Select%20data%20in%20drawn%20polygon%20area.html

演示和我的代码之间的主要区别在于它们创建了一个名为“points”的全局变量,并使用 turf.js 随机创建信息,然后将其绑定到 BubbleLayer 上。我通过 importDataFromUrl (datasource.importDataFromUrl(geoJsonFeed.url)) 提取数据,并且由于我们有大量的点,因此使用 SymbolLayer(显然它更适合大型数据集)。我不知道图层类型是否对我下面的挑战有任何影响。

当一个多边形形状被 selected 时,它会调用一个函数:"function searchPolygon(searchArea) { "

这个函数似乎“知道”'searchArea' 是什么。不知道如何。我已经在所有 JS 中搜索了一些参考,但找不到它。无论如何......它“以某种方式”知道 var 'poly' 应该是什么,使用代码:

var poly = searchArea.toJson();

然后我们要调用一个名为 pointsWithinPolygon 的 turf.js 函数:

var ptsWithin = turf.pointsWithinPolygon(points, poly);

我的挑战是。我究竟如何从我的数据中获得“点”的等效值?我已经尝试了各种。例如:

var points = pointLayer.getSource();
var points = pointLayer.getSource().shapesMap;

var points = datasource.getShapes().toJson();

var points = datasource.importDataFromUrl(geoJsonFeed.url)

我看了:

var points = pointLayer.getSource();

来自

但它似乎并不共享 pointsWithinPolygon 正在寻找的函数的相同数据格式。

您可以在以下位置查看代码:https://espiritos.projectwebdev.co.uk/index-v1.0.6a.html

我添加了一个“调试器”;在 function searchPolygon(searchArea) 中,主要的 'points' 问题是...当您围绕一个点画一个框时触发。

很有希望。

由于您是通过 URL 加载数据,因此必须异步加载。因此,importDataFromUrl 函数是一个 Promise,您可以在下载数据后观看并触发事件处理程序。在该事件处理程序中,您可以使用数据源 toJson 函数将点数据作为 GeoJSON 获取。

datasource.importDataFromUrl(geojsonFeed).then(() => {
    points = datasource.toJson()
});

或者,您可以在该示例的 searchPolygon 函数中调用数据源 toJson 函数,因为到那时点数据已经加载到数据源中。

我更新了以下代码示例以使用 GeoJSON 文件使其更加逼真。 https://azuremapscodesamples.azurewebsites.net/Drawing%20Tools%20Module/Select%20data%20in%20drawn%20polygon%20area.html