问题标签 [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.
javascript - 在 openlayers 6 中尝试颜色操作失败,因为 tileSource.getTileGridForProjection 不是函数
使用 openlayers 6.2.1,我正在尝试从 xyz 源更改图块的像素颜色(如颜色操作示例),
我首先定义一个 XYZ 源:
然后是一个 RasterSource 来操作颜色
然后是 ImageLayer :
在我的地图中通过 OSM 图层对象添加此图层失败,并在渲染时显示消息:
用具有相同 xyz 源的简单 TileLayer 替换 imagelayer 可以正常工作(源代码行 index.js:37)。
我做错了什么,缺少一些配置吗?
提前感谢您的帮助或兴趣
完整代码在 这里(简单示例 50 行)
无错误版本可在github 页面进行测试
openlayers - OpenLayers 按百分比增加或减少范围
我有一张地图,上面有功能,当我缩放到这些功能时,用户可以设置缩放缓冲区的首选项。
我不确定在 OL 中是否有这样做的内置方法...我查看了文档但什么也没看到...不确定我是否错过了它?
想知道是否有办法插入一个数字,比如 20%,这会使变焦放大 20%?
javascript - 为什么 openlayers 不检测我笔记本电脑的触摸事件?
我正在使用 OpenLayers 6.2.1 开发应用程序。为了针对移动设备对其进行优化,我试图在用户触摸屏幕时增加 hitTolerance。根据文档,地图应该能够检测到“touchOnly”事件。但是,当我在触摸屏笔记本电脑上执行触摸交互时,响应触摸事件的函数未检测到该事件:
相反,这些触摸事件触发了我的点击功能。mouseOnly 似乎有类似的问题,从我的鼠标触发的事件被检测为单击事件而不是 mouseOnly 事件。有我可以实施的解决方法吗?
快速编辑-我使用的是谷歌浏览器,也无法使用以下内容记录触摸事件:
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 谢谢你的帮助!
integer - openlayer 6,geojson如果是数字/浮点数/整数,如何标记特征?
我有一个 geojson 文件,其中包含所有设置的多边形。用这条线显示多边形中间区域的名称(字符串)是没有问题的:
但现在我想将 Polygon 中包含浮点数或整数的特征显示为标签。我只是想"Area_name"
用包含数字的特征来改变,例如:'Shops in area'
.
所以它看起来像这样:
但这不起作用。
我认为这与数据类型(string
vs integers
vs float
)有关,我需要制作 javascript 将数字视为字符串。但我在示例中找不到任何关于它的信息。我觉得我忽略了?我希望有人能给我一个正确方向的提示吗?
此功能仅包含整数,因此如果不显示 .0 会更好。但是这个 json 文件中的另一个特性包含百分比,因此 2 个小数与标签中的显示相关。
这是 geojson 文件中部分数据的样子:
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 中创建一个。您可以在 () 之间调用该变量。
下面你会看到几个例子。请注意,我将样式的名称从 更改partijStyle
为vvdStyle
。vvd_c
代表vvd_color
。
javascript - 在 OpenLayers 6 上重绘地图?
我正在尝试在 OpenLayers 中重绘矢量图层(版本 6.1.1,最新版本是 6.2.1),但任何关于它的文档都是 OpenLayers 3。我尝试自己翻译它,但要么重绘不是工作正常,或者我写的语法不正确。有谁知道该怎么做?
我无法让图标闪烁以显示它们正在更新,更不用说在数据库填满时让它们更新。让我的矢量图层上的图标刷新非常重要,所以任何事情都有帮助,谢谢!
openlayers - 在 Openlayers 中跨日期线包装 Geojson 数据
我正在使用 OpenLayers 使用 USGS 数据集绘制地震地图,该数据集位于:
我正在添加图层并像这样配置视图:
我的视图设置为在缩放级别 1 时,日期线包含在范围内。USGS 数据不会呈现在日期线的右侧。我知道这是因为 VectorSource 的默认范围是 [-180, -90, 180, 90]。我的问题是,如何将该范围更改为地图视图的范围,以便数据呈现在日期线的另一侧?
似乎最好的方法是截取 USGS 数据的坐标并对 lon 坐标进行转换,可能是通过ol/proj.transform或ol/proj.transformExtent,但我还没有找到 openlayers包含坐标的数据对象,也不是对它们应用地图或变换的方式。
angular - 在 OpenLayers 6 和 Angular 9 中没有交互
我正在尝试在 Angular 9 组件中设置 OpenLayers 6 Map。我可以成功加载 OSM 源并且控件正常工作,但是拖动地图或使用鼠标滚轮缩放等交互不起作用。手动添加默认交互不能解决问题。
在我之前的项目中一切正常,所以我主要是在我的组件之外寻找交互所依赖的因素,我可能没有想到。
map.component.ts
map.component.html
map.component.css