当前位置: 首页 > 知识库问答 >
问题:

MapBox queryRenderedFeatures返回的值太多

漆雕令秋
2023-03-14

我正在使用Android的MapBox SDK在地图顶部显示geojson文件。

从geojson的“特性”中,我创建了一些“fillLayer”,每个特性都与geojson中properties对象的值相关联。我用与值对应的颜色填充每一层。

为了从特定的本地化中获取此值,我使用API调用:"queryRenderedFeature"

以下是我如何从以前创建的geojsonSource对象创建图层:

for (int i=0; i < list_value_geojson.size(); i++){
    Map.Entry<Integer, GeoJsonSource> entry = list_value_geojson.get(i);
        mapboxMap.addSource(entry.getValue());
        FillLayer fillLayer = new FillLayer(entry.getValue().getId(), entry.getValue().getId());
        fillLayer.setProperties(PropertyFactory.fillColor(Color.parseColor(hashMapColors.get(entry.getKey()))));
        mapboxMap.addLayer(fillLayer);
}

这里,我如何从“位置”对象使用queryRenderedFeatures:

final PointF pixel = my_mapboxMap.getProjection().toScreenLocation(new LatLng(location.getLatitude(), location.getLongitude()));
List<Feature> features = my_mapboxMap.queryRenderedFeatures(pixel);

queryRenderedFeatures函数,有时会返回太多的功能,例如:我搜索一个特定位置,得到三个功能,但只有第三个功能具有正确的值,前两个功能具有紧挨着的图层的值。

好值是174而不是181,颜色应该是深色的。

以下是queryrenderedfeatures结果:

0 = {Feature@6242} : {"value":181}
1 = {Feature@6243} : {"value":181}
2 = {Feature@6244} : {"value":174}

我如何知道我应该使用哪个功能?MapBox"知道",因为显示层的颜色是正确的。

非常感谢你读了我的文章。

共有1个答案

李洋
2023-03-14

可以通过将层id作为queryRenderedFeature方法中的参数传入来限制查询的层。检出此示例。

 类似资料:
  • 我在ViewDidLoad函数中有一些代码,它将在调用堆栈的末尾设置一个类变量。我试图重构代码,使其成为一个单独的函数,它将返回值,而不是设置类变量。 由于我缺乏swift知识,我不确定哪里出了问题,我的函数似乎返回得太厄尔了,因为我可以在调试器中告诉我,它在被设置为之前跳转到return。 我还可以在调试器中看到,内部函数在返回主函数后调用。 如何等待内部调用完成后再返回?或者什么是正确的快速方

  • 5.3. 多返回值 在Go中,一个函数可以返回多个值。我们已经在之前例子中看到,许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息。下面的例子会展示如何编写多返回值的函数。 下面的程序是findlinks的改进版本。修改后的findlinks可以自己发起HTTP请求,这样我们就不必再运行fetch。因为HTTP请求和解析操作可能会失败,因此findlinks声明了2

  • 根据函数或者结构体方法的返回值,returnHandle 插件将自动将内容写入到 ResponseWriter. 目前支持的返回值及对应的行为如下: string 返回string,将会把string转为[]byte同时写入到ResponseWriter []byte 返回[]byte将会直接写入ResponseWriter error 返回错误,如果error不为nil, 则写入返回头500,内

  • 问题内容: 我在使用Ajax时遇到问题。 问题是,在获得ajax响应之前,它会返回cnt。因此它总是返回NULL。 有没有办法使正确的返回响应值? 谢谢! 问题答案: 由于AJAX请求是异步的,因此您的cnt变量将在请求返回并调用成功处理程序之前返回。 我建议重构您的代码以解决此问题。 一种方法是从AJAX请求的成功处理程序中调用调用了GetGrantAmazonItemCnt()的任何函数,此方

  • 问题内容: 使用进行搜索后,我可以从Chrome网络驱动程序获得以下信息: 这是规格要求吗? 我之所以问是因为我找不到在任何地方都用大写字母清楚地表示“ ELEMENT”的地方。我在规范中只能找到一个名为的键(它是:它设置为 我是否总能一直期待其他浏览器的网络驱动程序会做出这种响应?也就是说,是和总是返回? 这就是铬构成物体的方式吗?还是对任何Webdriver来说都是如此?当然,其他Webdri

  • 问题内容: 我正在使用Postgresql 8.3,并具有以下简单功能,该功能会将a返回 给客户端 现在,我可以使用以下SQL命令来调用此函数并操纵返回的游标,但是游标名称是由PostgreSQL自动生成的 此外,如38.7.3.5中所述,显式地将游标名称声明为函数的输入参数 。返回游标。我可以声明自己的游标名称并使用此游标名称来操纵返回的游标,而不是为我自动生成的Postgresql吗?如果不是