问题标签 [openlayers-6]

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.

0 投票
1 回答
248 浏览

javascript - 在 openlayers 6 中尝试颜色操作失败,因为 tileSource.getTileGridForProjection 不是函数

使用 openlayers 6.2.1,我正在尝试从 xyz 源更改图块的像素颜色(如颜色操作示例),

我首先定义一个 XYZ 源:

然后是一个 RasterSource 来操作颜色

然后是 ImageLayer :

在我的地图中通过 OSM 图层对象添加此图层失败,并在渲染时显示消息:

用具有相同 xyz 源的简单 TileLayer 替换 imagelayer 可以正常工作(源代码行 index.js:37)。

我做错了什么,缺少一些配置吗?

提前感谢您的帮助或兴趣

完整代码在 这里(简单示例 50 行)

无错误版本可在github 页面进行测试

0 投票
1 回答
763 浏览

openlayers - OpenLayers 按百分比增加或减少范围

我有一张地图,上面有功能,当我缩放到这些功能时,用户可以设置缩放缓冲区的首选项。

我不确定在 OL 中是否有这样做的内置方法...我查看了文档但什么也没看到...不确定我是否错过了它?

想知道是否有办法插入一个数字,比如 20%,这会使变焦放大 20%?

0 投票
2 回答
590 浏览

javascript - 为什么 openlayers 不检测我笔记本电脑的触摸事件?

我正在使用 OpenLayers 6.2.1 开发应用程序。为了针对移动设备对其进行优化,我试图在用户触摸屏幕时增加 hitTolerance。根据文档,地图应该能够检测到“touchOnly”事件。但是,当我在触摸屏笔记本电脑上执行触摸交互时,响应触摸事件的函数未检测到该事件:

相反,这些触摸事件触发了我的点击功能。mouseOnly 似乎有类似的问题,从我的鼠标触发的事件被检测为单击事件而不是 mouseOnly 事件。有我可以实施的解决方法吗?

快速编辑-我使用的是谷歌浏览器,也无法使用以下内容记录触摸事件:

0 投票
1 回答
19 浏览

javascript - OpenLayers - ol.Feature(s) 在初始页面加载时正确显示,但在页面加载完成后添加新 ol.Feature(s) 时显示不正确

我正处于我早期的 OpenLayers 学习周期中,感觉有点失落。加载页面时一切正常;也就是说,我有许多ol.Feature对象被创建(来自 JSON 文件)并在地图上正确呈现。

ol.Feature当我尝试将其他对象添加到地图时,会出现我遇到的问题。无论如何,一切在内部看起来都是正确的 - 该ol.Feature对象只是没有出现在地图上。

以下是用于创建 Map 的 BASE JS 代码:

以下是用于创建单个ol.Feature对象的代码块:

在初始页面加载期间,每个ol.Feature对象都添加到名为“aFeatures”的 ARRAY 对象中:

var aFeatures = [];

此代码在“forEach”循环中运行,因为它从 JSON 文件中提取数据:

aFeatures.push(addMapMarker(sMarkerId, oEntitiesData.did, oEntitiesData.lon, oEntitiesData.lat));

一旦“forEach”循环完成,“aFeatures”数组就会被添加到ol.source.Vector对象的“features”属性中:

vectorSource.addFeatures(aFeatures);

到目前为止很好- 当我尝试将其他ol.Feature对象添加到ol.Map(一一添加)时,就会出现问题。我基本上遵循与上述相同的例程,使用对 addMapMarker 函数的调用来创建一个新ol.Feature对象:

var oMapMkr = addMapMarker(sMid, oEntitiesData.did, oEntitiesData.lon, oEntitiesData.lat);

然后将其添加到ol.source.Vector对象中的“功能”属性中:

vectorSource.addFeature(oMapMkr);

问题是:毕竟,该ol.Feature对象没有出现在页面上。在对象上调用render()orrenderSync()函数ol.Map没有帮助。

最后 - 我知道额外的帖子页面加载ol.Feature对象被添加到 markerVectorLayer,因为我逐步完成了它:

markerVectorLayer.getSource().getFeatures().forEach(function(item, index)

我怀疑我遗漏了一些非常明显的东西,但我只是不知道那是什么 - LOL 谢谢你的帮助!

0 投票
2 回答
76 浏览

integer - openlayer 6,geojson如果是数字/浮点数/整数,如何标记特征?

我有一个 geojson 文件,其中包含所有设置的多边形。用这条线显示多边形中间区域的名称(字符串)是没有问题的:

但现在我想将 Polygon 中包含浮点数或整数的特征显示为标签。我只是想"Area_name"用包含数字的特征来改变,例如:'Shops in area'.

所以它看起来像这样:

但这不起作用。

我认为这与数据类型(stringvs integersvs float)有关,我需要制作 javascript 将数字视为字符串。但我在示例中找不到任何关于它的信息。我觉得我忽略了?我希望有人能给我一个正确方向的提示吗?

此功能仅包含整数,因此如果不显示 .0 会更好。但是这个 json 文件中的另一个特性包含百分比,因此 2 个小数与标签中的显示相关。

这是 geojson 文件中部分数据的样子:

0 投票
1 回答
98 浏览

dynamic - OL6,动态颜色/不透明度/透明度取决于特征中的数量(百分比)

我受到本节的启发:https ://openlayers.org/workshop/en/vector/style.html 尤其是“动态样式”。有没有一种简单的方法可以在我的地图中包含动态样式?

我正在考虑根据特征中的数字更改多边形的不透明度。在我的 geojson 文件中,我有一个带有百分比的功能(VVD_perc

我想我必须在我的样式部分围绕这条线改变一些东西: color: 'rgba(100, 100, 100, 0.25)',但我不确定要改变什么,以及在哪里改变。

我在想百分比越高,多边形越不透明。所以不透明度来自:

color: 'rgba(100, 100, 100, 0.01)'1% 到 color: 'rgba(100, 100, 100, 1)'100%。

java-script 部分中的样式部分如下所示:

这是我要求具有百分比的功能的部分。也许这也有用?

我希望你们中的一个能让我朝着正确的方向前进。如果有一本书或网站上有一个例子,我已经很高兴了。

谢谢迈克的另一个大帮助 ,我也做了一些其他的改变。我希望它可以帮助其他人。似乎无法在setColor()零件中进行计算。为此,您需要先var在 variabele 中创建一个。您可以在 () 之间调用该变量。

下面你会看到几个例子。请注意,我将样式的名称从 更改partijStylevvdStylevvd_c代表vvd_color

0 投票
2 回答
1983 浏览

javascript - 在 OpenLayers 6 上重绘地图?

我正在尝试在 OpenLayers 中重绘矢量图层(版本 6.1.1,最新版本是 6.2.1),但任何关于它的文档都是 OpenLayers 3。我尝试自己翻译它,但要么重绘不是工作正常,或者我写的语法不正确。有谁知道该怎么做?

我无法让图标闪烁以显示它们正在更新,更不用说在数据库填满时让它们更新。让我的矢量图层上的图标刷新非常重要,所以任何事情都有帮助,谢谢!

0 投票
1 回答
287 浏览

openlayers - 在 Openlayers 中跨日期线包装 Geojson 数据

我正在使用 OpenLayers 使用 USGS 数据集绘制地震地图,该数据集位于:

我正在添加图层并像这样配置视图:

我的视图设置为在缩放级别 1 时,日期线包含在范围内。USGS 数据不会呈现在日期线的右侧。我知道这是因为 VectorSource 的默认范围是 [-180, -90, 180, 90]。我的问题是,如何将该范围更改为地图视图的范围,以便数据呈现在日期线的另一侧?

似乎最好的方法是截取 USGS 数据的坐标并对 lon 坐标进行转换,可能是通过ol/proj.transformol/proj.transformExtent,但我还没有找到 openlayers包含坐标的数据对象,也不是对它们应用地图或变换的方式。

0 投票
2 回答
1479 浏览

angular - 在 OpenLayers 6 和 Angular 9 中没有交互

我正在尝试在 Angular 9 组件中设置 OpenLayers 6 Map。我可以成功加载 OSM 源并且控件正常工作,但是拖动地图或使用鼠标滚轮缩放等交互不起作用。手动添加默认交互不能解决问题。

在我之前的项目中一切正常,所以我主要是在我的组件之外寻找交互所依赖的因素,我可能没有想到。

map.component.ts

map.component.html

map.component.css

0 投票
1 回答
310 浏览

reactjs - 在 React 中显示 openlayers 信息窗口

当用户单击地图上显示的标记之一时,我试图显示一个信息窗口(叠加弹出窗口)。这是代码:

除了在功能图标单击时显示信息窗口外,几乎一切工作正常。据我所知,点击定位被应用于不同的 div,而不是包含 . 请参阅下面的屏幕截图。任何帮助,将不胜感激。谢谢。 在此处输入图像描述