首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure地图(使用Turf.js) -无法从SymbolLayer获取“点”

Azure地图(使用Turf.js) -无法从SymbolLayer获取“点”
EN

Stack Overflow用户
提问于 2020-07-01 18:14:45
回答 1查看 99关注 0票数 0

我在这上面找了几个小时,终于找到了帮助。

我正在使用Azure地图创建地图。我已经创建了一个绘图区域选择工具。它在Azure演示中工作得很好,因为他们创建了一个名为'points‘的变量,然后只分配一些随机的功能和位置。但是..。我正在使用以下命令拉取数据:

代码语言:javascript
复制
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 (显然,它更适合于大型数据集)。我不知道图层类型对我下面的挑战是否有影响。

当选择一个多边形形状时,它会调用一个名为"function searchPolygon(searchArea) {“的函数。

这个函数似乎“知道”什么是“searchArea”。不知道是怎么回事。我已经在所有的JS中搜索了一些关于这一点的参考,但没有找到。不管怎样..。通过使用下面的代码,它“不知何故”知道var 'poly‘应该是什么:

代码语言:javascript
复制
var poly = searchArea.toJson();

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

代码语言:javascript
复制
var ptsWithin = turf.pointsWithinPolygon(points, poly);

我的挑战是。我到底如何从我的数据中获得“点”的等价值?我什么都试过了。例如:

代码语言:javascript
复制
var points = pointLayer.getSource();
var points = pointLayer.getSource().shapesMap;

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

var points = datasource.importDataFromUrl(geoJsonFeed.url)

我看了一下:

代码语言:javascript
复制
var points = pointLayer.getSource();

来自How to get all visible points in the map view bounds in Azure Maps

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

你可以在https://espiritos.projectwebdev.co.uk/index-v1.0.6a.html上看到代码。

我在function searchPolygon(searchArea)中添加了一个“调试器;”,这是主要的“点”问题所在……当您在点周围绘制一个框时,它会触发。

满怀希望。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-02 00:45:00

由于您是通过URL加载数据的,因此必须异步加载。因此,importDataFromUrl函数是一个承诺,一旦下载数据,您就可以监视并触发一个事件处理程序。在该事件处理程序中,您可以使用数据源toJson函数以GeoJSON格式获取点数据。

代码语言:javascript
复制
datasource.importDataFromUrl(geojsonFeed).then(() => {
    points = datasource.toJson()
});

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62674558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档