Mapbox Android学习笔记(9)地图查询

2024-03-26 11:48

本文主要是介绍Mapbox Android学习笔记(9)地图查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Query map features

Maps SDK 允许您查询地图图层并返回一个 GeoJSON 特征列表,其中包含关于该特性的几何形状和属性的信息。例如,用户可以通过点击地图查询地图特性,并返回当时作为 GeoJSON 特征存在的任何 POIs。然后,您可以访问特征中的属性,包括作为字符串的 POI 名称。查询地图并不总是返回您正在寻找的信息。可以接收包含0个特征的列表。

查询工作原理

您可以在地图中查询某个点 Point 或边界框 BoundingBox 中存在的特征。除了层之外,还可以查询源以获取与查询匹配的特定信息,无论这些项是否显示在地图上。

由于特征来自 vector tile(或内部转换为 tiles 的 GeoJSON 数据),查询可能会分割特征几何图形,或者跨平铺边界复制它们。因此,特征可能会在查询结果中出现多次。

例如,当通过边界框在包含跨多个tile的高速公路的区域中进行查询时,查询将为高速公路跨的每个tile返回一个单独的特性。每个特征的几何形状将被限制在存在于该块上的高速公路部分。类似地,由于平铺缓冲,靠近平铺边界的点特征可能出现在多个平铺中。

查询显示功能

使用 queryRenderedFeatures 返回当前在设备上呈现的所有地图特性。功能必须在设备的视图中可见,并在访问之前完全呈现。

查询一个点
queryRenderedFeatures 只接受屏幕像素值,而不接受 LatLng ,因此在许多情况下,您需要将屏幕位置转换为地理位置。在下面的示例中,当单击地图时,它提供了一个LatLng,用于获取地图上该点的特性:

@Override
public void onMapClick(@NonNull LatLng point) {// 将LatLng坐标转换为屏幕像素,只查询呈现的特性。final PointF pixel = mapboxMap.getProjection().toScreenLocation(point);List<Feature> features = mapboxMap.queryRenderedFeatures(pixel);// 获取列表中的第一个特征(如果存在)if (features.size() > 0) {Feature feature = features.get(0);// 确保特征feature具有已定义的属性if (feature.properties() != null) {for (Map.Entry<String, JsonElement> entry : feature.properties().entrySet()) {// 打印所有属性Log.d(TAG, String.format("%s = %s", entry.getKey(), entry.getValue()));}}}
}

查询呈现的所有层的特征:

List<Feature> features = mapboxMap.queryRenderedFeatures(pixel);

查询在特定层中呈现的特性:

// 您可以传入一个单层id或一组层id
List<Feature> features = mapboxMap.queryRenderedFeatures(pixel, "LAYER-ID");

在边界框中查询
要查询某个区域的地图特性,请使用 RectF 对象传入一个包围框。这可以来自地图顶部显示给用户的Android视图,也可以来自视图端口中显示的四个坐标。

下面的示例展示了如何使用四个坐标创建 RectF。 RectF 对象被传递到 queryRenderedFeatures() 中。

RectF rectF = new RectF(mapView.getLeft(),mapView.getTop(),mapView.getRight(),mapView.getBottom()
);
mapboxMap.queryRenderedFeatures(rectF);
查询源特征

querySourceFeatures() 返回与查询参数匹配的所有特征,而不管该特征当前是否在地图上呈现。查询的域包括当前加载的所有向量块和GeoJSON源块。此函数不检查可见视图端口外的tile。

要查询源,必须将查询参数作为一组过滤器传入,并且只有满足语句的特征才会添加到返回的特征列表中。在下面的示例中,map样式包含一个名为 population-source 的GeoJSON源,它为每个特征包含一个 population 属性。下面的查询将返回的特征限制为人口大于100,000的特征:

GeoJsonSource source = mapboxMap.getSourceAs("population-source");
List<Feature> features = source.querySourceFeatures(Expression.get("population"));

这篇关于Mapbox Android学习笔记(9)地图查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848407

相关文章

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.