问题标签 [vector-tiles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
leaflet - 如何在 Leaflet 中将 GeoJSON 点添加为矢量切片?
我已经阅读了我可以找到的关于 Stack Overflow 的所有问题以及我可以在网络上找到的每个示例,用于将 GeoJSON 矢量切片添加到传单地图。不幸的是,我仍然无法理解它,更不用说让它处理我的数据了。
我有一个 GeoJSON (这里) 有很多点。我可以在 Leaflet 中添加它作为一个图层,所以我确信它是一个具有真实值的有效文件。
我试过geojson-vt和传单矢量网格。
geojson-vt 不断返回错误:
Uncaught ReferenceError: z is not defined at <anonymous>:1:30
使用以下代码:
我在诊断这个问题时遇到了很多麻烦,因为我发现的所有示例都没有显示它们的数据,但也没有引用定义 z、x 和 y,而且这些不是 GeoJSON 对象的必需值。我错过了什么?
从我的另一个问题中,我了解到 Leaflet 矢量网格在 GeoJSON 点上存在错误。我设法更改了一些源代码以解决最初的错误,但现在出现了 1,000 多个错误,例如:
Error: <path> attribute d: Expected number, "MNaN,47.5aundefin…".
从代码:
L.vectorGrid.slicer(geoJson).addTo(map)
如何将 GeoJSON 点作为矢量切片图层添加到传单地图?有没有人有任何以数据为参考的简单示例?任何帮助或其他调查方向将不胜感激。
mapbox - 如何使用 ARCGIS JS API 显示 MapBox 数据?
假设,我有一个 URL/链接形式的 MapBox 数据集。如何在使用 ArcGIS-js-API 的 Web 应用程序中显示该数据。
任何帮助将不胜感激!
javascript - 传单 - 使所有瓷砖层可点击/交互
我有一个传单地图,它使用Leaflet VectorGrid具有来自 GeoJSON 点的多个矢量切片图层:
以这种方式将它们添加到地图中只会使最顶层(即layer2
)可点击。我发现添加 aL.control.layers
以删除上层允许单击第一层 ( layer1
),但随后只有一个层可见。
有没有办法让所有瓦片层在全部显示时都可点击/交互?理想情况下,当鼠标指针悬停在从基本手到指针手的任何层中的某个要素上时,鼠标指针会发生变化,以指示该要素是可点击的。
编辑(2017 年 7 月 20 日):我发现了这个要点:单击 Leaflet VectorGrid 的多个层。这似乎很有帮助,但鼠标指针不会改变,除非将鼠标悬停在最顶层。它还返回了许多点击功能的实例。
android - 缩放/移动 VectorTile 图层时,Android 上的 Chrome 崩溃
我们正在为平板电脑创建一个 WebPpp。
因为我们的 WebApp 需要具有离线功能,所以我们将整个 VectorTile 层保存在 pouchDB 中(大约 25k 瓦片)。
该层用于定位(很像谷歌地图),
它包括街道、建筑物、森林等。
瓷砖是使用 GeoServer 2.11.1 扩展生成的。
现在我们的问题是,当我们移动地图或放大/缩小时,chrome 崩溃了(“哦,不”消息)。Firefox 不能更好地工作,不会崩溃,但速度慢得要命。
出于测试目的,我停用了任何样式(只是基本的),只显示了这一层。
有谁知道为什么浏览器崩溃,或者有没有办法找出来?还有替代品吗?
用于测试的平板电脑:Galaxy note pro,这款平板电脑不适合图形应用程序吗?
其他平板电脑确实工作正常。
谢谢
javascript - openlayers vectortiles上没有显示城市名称
我按照https://openmaptiles.org/docs/website/openlayers/上的示例进行操作,但我不知道为什么,例如为什么不扩展城市名称。而不是仍然显示占位符。我也有一个自己的 openmaptiles.org api 密钥,但这仍然没有改变。
有人知道可能出了什么问题吗?
我在这里设置了一个小提琴:https ://jsfiddle.net/f55e5umx/并使用风格
openlayers - 从 Mapbox 矢量切片修改 OL3 功能
我想修改 MVT 层的特征,但是修改交互不像简单的矢量图层那样容易。下面的代码确实选择了该功能,它确实出现在修改交互功能属性中,所以我不确定出了什么问题:
我的 MVT 层是这样设置的:
我可以毫无问题地设计和选择对象,但修改交互似乎没有触发。根本没有错误消息。
任何关于如何允许修改 MVT 层的建议将不胜感激。我试图避免通过 WFS 重新请求该功能,以便我可以修改它。
非常感谢
maps - 无法使用tippecanoe从geoJson生成矢量图块
我正在尝试使用mapbox/tippecanoe将 geoJson 文件转换为矢量文件。我已经构建了文档中提到的tippecanoe 图像。但是当我运行以下命令时,什么也没有发生。
docker run -it --rm \ -v /tiledata:/data \ tippecanoe:latest \ tippecanoe --output=/data/output.mbtiles /data/example.geojson
它向我显示了类似的消息
对于第 0 层,使用名称“example”/data/example.geojson:没有这样的文件或目录 0 特征,10 字节几何,4 字节单独元数据,0 字节字符串池。没有读取任何有效的几何图形
在我的数据文件夹中有 example.geojson 文件存在,但它仍然无法找到结束。
我在 Ubuntu 14 机器上运行它。
有人可以帮我解决这个问题吗?提前致谢。
openlayers - 光栅图块顶部的矢量图块未显示在 openLayers 中
我正在尝试在开放图层地图版本 4.3.3 中的栅格图块上渲染矢量图块。两个图块都在渲染,但矢量图块没有显示在光栅图块上。例如,我有一个状态的矢量图块,并希望它在光栅图块顶部显示为半透明层。我已经将我的矢量切片存储在 S3 存储桶上,并且 tileLoadFunction 从 S3 存储桶中获取这些切片。我没有设置任何预测。我认为 tileLoadFunction 有一些默认投影。
以下是我显示两个图块的代码:
任何人都可以指导一下,这里缺少什么将矢量切片正确显示为光栅切片上的半透明图层?
谢谢,
c# - 加密矢量瓦片 Mapbox 的解密
我会尽量简短,但我会分享整个画面。
问题陈述
我正在使用来自tippecanoe的矢量图块从我的数据mapbox
中创建。问题是,在 Web 客户端上,当我看到并下载并通过此(mapbox-vector-tile-cs)库运行它时,我能够成功地从图块中获取数据。这意味着任何有一些基本谷歌搜索的人也可以从矢量图块中窃取我的数据。.pbtiles
geojson
inspect element
.pbf
我能够实现的目标
为了避免安全问题,我的时间表很短,我想出了一个快速而肮脏的方法。tippecanoe
创建sqlite db后.mbtiles
,我运行一个 java 实用程序来加密blob
使用AES 256
加密中的数据,并以两种不同的方式将其存储在两个不同的 sqlite db 中:
以字节形式存储到不同的
.mbtiles
sqlite 数据库中(存储为 Blob)。随着z, x, y
和metadata
将加密数据编码为
base64
,然后将 base64 编码的加密切片数据存储到字符串数据类型列中。随着z, x, y
和metadata
。并将密钥(base64 编码)和初始化向量(base64 编码)存储到一个文件中。
API 端(问题 1)
现在,当我.pbf
从 API 获得未加密的数据时,会设置一个类型的标头,gzip
并application/x-protobuf
设置有助于将未加密的blob
数据转换为 aprotobuf
并返回一个.pbf
下载的文件。
现在,当我尝试从 API 中获取与未加密时具有相同标头的加密数据时,下载.pbf
失败说Failed - Network error
. 我意识到这是由于标头application/x-protobuf
试图将文件打包到一段.pbf
时间内造成的,blob 的内容可能与预期不匹配,因此结果不匹配。
我删除了标题application/x-protobuf
,因为我现在不能gzip
,所以我也删除了标题gzip
。现在数据显示在 chrome 浏览器上而不是被下载,我认为现在它只是一个随机响应。
问题是,我怎样才能让它发送一个.pbf
包含加密数据的文件,并且这个((mapbox-vector-tile-cs))库可以解析数据?我知道在传递它之前需要先解密数据,因为parsing
假设它已被解密并且我有存储blob
到.mbtiles
.
这个带有 UWP 项目的库(问题 2)
所以现在如上所述(因为我没有标题部分的解决方案)我删除了标题并让 API 返回一个直接响应。
我现在面临的问题是,当我将解密的(我检查解密成功并且解密的数据与存储在其中的内容完全匹配Blob
)Blob 数据传递给
var layerInfos = VectorTileParser.Parse(stream);
代码行返回我一个IEnumerable<Tile>
that isnot null
但里面有0 layers
。而实际的瓷砖包含5 layers
在其中。
我的问题是,我如何让这个((mapbox-vector-tile-cs))库返回图层。
在我发送之前从服务器获取图块并解密的代码parsing
如下:
使用以下GetTileFromWeb()
方法从服务器获取图块:
PS:抱歉这么长的问题,我不习惯如此详尽的细节,但似乎我需要分享更多,因为加密是我的长处,而地图数据矢量瓦片不是。
ruby-on-rails - 如何从 Rails 控制器发送 PG 二进制数据?
我有一个带有 PostGIS 扩展的 Postgres 数据库和一些地理数据。我需要使用自定义 SQL 查询(使用ST_...
函数)生成图块,该查询返回二进制数据(bytea
, like \x1a320a0474657374121d12020000180322150946ec3f1a14453b0a09280f091413121e09091e0f1a026331220228012880207802
)。而且我需要将这些数据从我的 Rails 控制器发送给请求者,标头如'Content-Type: x-application/protobuf'
.
所以,我的问题是:
1)如何从数据库中获取二进制数据(Sequel
,ActiveRecord::Base.connection.execute
?) 2)如何在控制器动作中返回这些数据?( send_data ..., tyle: ''
?)
谢谢!