我想请求一些帮助,因为我一直在努力解决一个仅在IE8中出现的代码问题。
您可以查看演示页面,该页面在上演示了该问题。正如您所注意到的,它在Firefox、Chrome、Safari中运行良好,但在IE8中,它会触发openlayers.js第684行中的Javascript错误“Invalid Argument”,字符178
本页首先初始化openlayers地图对象,并声明一个空的cityLayer矢量图层,稍后我们将使用该图层绘制点。
链接“ShowCity list”异步调用并将其插入DO
在OpenLayers中,我使用以下形式的代码创建了一个由两个线性对象组成的多边形(这在Java+GWT中,但同样的原则适用于JS):
List linearRingList=new ArrayList();
列表点1=新的ArrayList();
... 填充点1。。。;
添加(新的线性化(点1.toArray(新点[points.size()])));
列表点2=新的ArrayList();
... 填充点2。。。;
添加(新的线性化(点2.toArray(新点[points.size()]
我有一个在QGIS中生成的多段线的GML文件,我正在OpenLayers地图中显示该文件。在QGIS中,通过为每条多段线指定属性x、y和r(横向长度和旋转角度),可以整齐地控制多段线上标签的位置和旋转。我的问题是——有可能在OpenLayers中复制这一点吗?目前,下面的代码将显示多段线,指定线颜色(从属性)并标记线的端点,但我无法找到使用x、y、r属性定位和旋转标签的方法,无论是使用当前图层中的可用标签样式类,还是通过在隐藏点上创建标签的新地图图层。或者,是否有其他标记多段线的方法,例如动态标
使用openlayers 3/4,我在绘制仅包含点的featurecollection时遇到问题。我想做的就是在地图上画一个点,当你点击它的时候,一个弹出窗口就会出现,它会显示一个属性
我得到的错误是:
core.js:1448 ERROR-TypeError:a.Yf不是函数
在ol.js:152
我的代码是:
let points = {
"type": "FeatureCollection",
"features": [{
"type": "Feature"
我试图复制这个开放层示例:
但是,我想使用下载的完整OLV5.3.0版本库。到目前为止,这已经奏效,示例使用:
import VectorLayer from 'ol/layer/Vector';
var vectorLayer = new VectorLayer({});
我可以使用:
var vectorLayer = new ol.layer.Vector({});
但是,我无法使用上述方法复制以下内容:
import Layer from 'ol/layer/Layer';
var
我想将我在Openlayer2中使用的一些控件特性添加到ol6中。在openlayer2中,我使用了navigationhistory,单击并拖动放大和缩小控件
var mouseControl = {'pan':'move','zoom':'crosshair','zoomout':'crosshair','toolQuery':'context-menu', 'mse':'crosshair'};
for(key in controls) {
control = controls[
我可以使用多边形上的OpenLayers自定义背景(例如,使用图像)
感谢您的回复所有WFS/矢量样式属性都已打开
根据该链接,不能为多边形设置背景图像。尝试在服务器端进行,如果您使用MapServer,它是可能的。好的,问题和答案都很老,但没关系。
您现在可以在OL 2.13.1中使用此SnipSet:
var _styleMap = new OpenLayers.StyleMap();
var _ruleDef = [new OpenLayers.Rule({
symbolizer:
我无法从地图中删除编辑工具栏。我不明白为什么这个代码不起作用:
var editingToolBar = new OpenLayers.Control.Panel({
displayClass: 'customEditingToolbar',
allowDepress: true
});
var draw = new OpenLayers.Control.DrawFeature(
newShape, OpenLayers.Handler.Polygon,
{
我知道网上有很多关于这方面的帖子,但我无法将GeoServer中的WMS层加载到OpenLayers中。OpenLayers将该层添加到“层切换器”中,但却看不到它。我不确定这是否会产生影响(我不知道会如何),但我的图层存储在PostGIS数据库中,我可以在GeoServer的图层预览中很好地查看它。该层位于EPSG4326中,我知道这是OpenLayers的默认值,我正在将其添加到OSM基础图中。这是我在GeoServer图层预览URL中的完整URL:
http://localhost:808
我将特征的属性值更改为自定义策略,但在绘制特征时,特征不采用新的属性值
这是我正在做的测试:
OpenLayers.Strategy.LabelChange = OpenLayers.Class(OpenLayers.Strategy, {
activate: function() {
var activated = OpenLayers.Strategy.prototype.activate.call(this);
if(activated) {
我正在使用OpenLayer 3将图像加载到图层中。有些图像比容器大小大或小
如何缩放正在加载的图像以适合容器内部
我在开放层官方网站上找不到相关的例子
谢谢。我对您的确切问题有点困惑,但是您可以通过设置imageExtent使图像在其自身层内的特定范围内。下面是一个将图像的四个角设置为地图上某个位置的示例。这和你想做的相似吗
var imageLayer = new ol.layer.Image({
source: new ol.source.ImageStatic({
我想实现一个“跟踪”地图视图,其中当前位置不在地图的中心,而是从底部到地图高度的1/4(就像标准导航系统处于跟踪模式)。
我发现这是与[centerOn]()一起工作的,将当前GPS坐标定义为“坐标”,将“位置”定义为地图高度的1/2和1/4
现在,我想添加动画,在GPS更新之间进行平滑过渡
我用[animate]()尝试过这一点,从动画的角度看,它确实很好,但不能定位在1/4高度。
有没有办法将两者结合起来?一种方法是使map div溢出,使中心显示在可见部分高度的1/4处
var-map=
当我使用绘制交互完成绘制时,该特征将显示在地图上
我不希望该功能显示在地图上
我想在绘图完成后删除该特征
我从抽屉事件中删除了该功能,但它仍然显示在地图上
什么时候应该删除该功能
var draw = new ol.interaction.Draw({
source: source,
type: 'LineString',
style: style,
freehandCondit
尝试(最终)在谷歌地球插件底图上加载标记、向量和WMS。谷歌地球似乎“与他人相处不好”
如果我以“谷歌方式”实例化地图:
createInstance('map',initCB,failCB)
我得到了一个谷歌地图,我可以在其中添加谷歌地名,但我不能将该实例传递给OpenLayers
使用以下命令:
map = new OpenLayers.Map('ol-map');
map.addControl(new OpenLayers.Control.LayerSwitcher());
var gp
我正在尝试创建一个OpenLayers UI,它具有两个基本功能:
地图上有固定的特征,当用户将鼠标悬停在固定特征上时,会在页面上获得附加信息(而不是地图上的弹出窗口)
有一个可拖动的参考点,用户可以在地图上移动
我现在已经让每一个独立工作。我有两个向量层,一个用于固定特性,一个用于可拖动特性。第一层有一个OL.Control。使用{hover:true}选择feature控件,第二层有一个OL.Control.DragFeature控件。但是,当我启用DragFeature控件时,Sele
使用此选项,可以从带有名称和说明的文件标记加载。可以创建带有描述的标记而不从保存的文件加载它们吗?您可以自己创建。
Openlayers不支持此功能
我想更改OpenLayers.Control.ModifyFeature控件的图层
我尝试完全移除控制器,然后基于新层添加另一个控制器。
我通过使用如下循环直接更改了ModifyFeature的图层属性:
for(var i = 0; i <= 10; i++) {
if(document.getElementById('verksamhet').selectedIndex === i) {
controlList.modifyFeature.layer = w
如何使用OpenLayers在地图中查找特定陆地区域的高程?您可以使用Google服务调用在世界上查找特定区域的高程谢谢您的帖子。我在其他地方搜索过同样的结果。刚才我明白了。我浪费了过去一年的时间来寻找这个愚蠢问题的答案。棒 极 了
我想将特征添加到向量层,然后单击该特征以显示有关该特征的信息。有人能帮我介绍一下吗。您可以显示一个弹出窗口来显示信息
将包含功能信息的属性设置为“name”,如下所示:
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(specify your points here),
{some:'data'},
{externalGraphic: 'image for your feature',
gra
(我在这篇文章中搜索了一下,但没有多大成功。他们似乎只解决了事件的问题。)
我们的网站正在使用qTip2作为工具提示,我想在我的向量层中有一些功能的弹出窗口。为了简化操作,我想使用qTip2工具提示而不是openlayers弹出窗口(这样我们就可以使用自己的样式了)
创建特征时,我需要对DOM对象的引用,以便将qTip2工具提示附加到该对象:
function onFeatureCreate(feature){
var elem=?
$(elem).qTip2(...);
}
我想使用OSM地图,我决定使用OpenLayers
我看到了一个例子:
我可以得到如下结果:
但我希望我的地图看起来更像这个:
我指的是样式、颜色和细节,不是控件(我知道如何添加自己的控件、标记等)
我想做一些更改,例如:将背景变成绿色,将建筑物的底色改为灰色,并用1倍的黑色轮廓,将主要街道的黄色去掉,隐藏火车轨道和停车场等
如何实现它?所有这些更改都必须通过OSM地图的样式化来完成,并且不能在“后处理”中完成(例如,可以在获得地图后将整个地图更改为灰度)
我的示例代码(基于其中一个Open
我正在编写一个页面,其中2D和3D地图并排显示,如中所示。可以在2D和3D中更改底图(彼此独立),也可以在2D和3D中打开和关闭其他图层(彼此独立)
如上所述,ol铯同步:
地图上下文(边界框和缩放级别)
光栅数据源
二维和三维矢量数据源
地图选择(选定项目)
地图和全局视图之间的动画过渡
我想创建自己的同步器,它只同步移动(地图上下文),而不同步光栅或矢量图层。所以我想创建自己的同步器,但不知道该怎么做,当我只想同步地图上下文时。这就是我正在做的:
var ol3d = new olcs.
我有一些代码,可以用来检查多边形内部的位置或坐标。问题是,它可能有10000个或更多的位置,这会导致性能问题,而map的速度越来越慢。请在下面找到我的代码:
places.forEach(p => {
this.isInsidePolygons(p.latitude, p.longitude)
})
isInsidePolygons(latitude: number, longitude: number): boolean {
使用OpenLayers 6.1版,旋转贴图图标和概览贴图边界框会朝相反方向旋转。地图边界框在概览地图中旋转,这是对第5版的改进,但方向错误。如果它在同一方向旋转,框将不会显示主地图覆盖的区域。如果将示例地图旋转45度,使其从西班牙北部延伸到德国中部,您可以看到效果,您完全正确,我道歉。谢谢
我在加载这样的GeoJSON时遇到了一个问题:
new OlLayerVector({
source: new OlSourceVector({
url: layer.url,
format: new ol.format.GeoJSON({defaultDataProjection: dataProjection, featureProjection})
})
});
尽管指定了EPSG:32632的投影,但加载的特性占有率很差,而且
我有一个TileLayer,TileWMS源代码如下:
this.imageLayer = new TileLayer({
source: new TileWMS({
url: url,
crossOrigin: "anonymous",
params: params,
serverType: 'geoserver',
transition: 0,
}),
});
this.map.addLayer(this.ima
我使用的是Openlayers-2.12版本。
但锚定的弹出窗口偏移无法正常工作。它在地图的另一半显示左侧的弹出窗口,尽管我已经将相对位置设置为“tr”
有什么帮助吗?我在回答自己的问题时认为这可能会帮助别人。
如果我只使用弹出窗口而不是锚定弹出窗口,则效果很好。它会出现,而不是偏移属性。它们允许访问用于计算x,y位置的函数
popup.calculateNewPx = function(px){
// modify OpenLayers.Pixel object here
re
我有一张地图,上面有很多poi图层。此POI按类别(即:食物、睡眠等)和子类别(即:中餐厅、意大利餐厅等)排序
我希望在地图外为每个类别设置一个div,其中包含显示/隐藏相应图层的子类别按钮列表
现在,我所能做的就是在一个单独的div中显示层切换器
layerSwitcher = new OpenLayers.Control.LayerSwitcher({'div':OpenLayers.Util.getElement('customlayerswitcher')});
您的帮助将非常感激:)
在地图中添加/删除图层时是否会触发事件
我通过map.getLayers()组看到了一些东西,但它似乎只触发了“更改”事件,不包含添加或删除的层。请尝试层上的属性更改事件。当层的属性发生更改时,会触发该命令
map.getLayers().on("propertychange", function(e) {
// triggered when layer added or removed
});
代码笔:
或在每个层上设置change事件
layer.on("change", func
当我在OL中使用缩放级别0时,我可以看到多个世界。对我来说,似乎只有一个世界是具有正确坐标的“正确”世界。当我在左边的第一个世界上绘制点要素时,我无法转换它,并且坐标不是真实世界的坐标。我只能在第三世界从左边画的时候翻译这个点。
我觉得这有点奇怪。为什么OL显示了多个世界,而其中只有一个是正确的?你能做点什么让每个世界的坐标都一样吗
这是一个可以测试行为的小提琴:
代码片段:
var-map=新的ol.map({
目标:“地图”,
图层:[
新ol.layer.Tile({
来源:new ol
我使用OpenLayers在标准HTML页面上显示地图,我想创建一个位于地图顶部的div。但是,div似乎总是被地图分幅遮住
我相信有一种方法可以将元素添加到映射本身,但在这种情况下,这不是一个可行的选择,因为div可能会部分浮动在映射上,部分浮动在其他页面元素上
这是基本的HTML。为了实现这一点,我需要向任一DIV添加哪些CSS值 添加一个z索引
另一种内部方法是使用此css:
div.olMapViewport {
z-index: 0;
}
根据需要编辑此文件
<
我试图在加载时在地图中显示要素名称(例如:建筑名称)
我们如何使用GeoServer在OpenLayers中显示这些内容
谢谢,
Ashok您需要使用geoserver中的样式为功能定义TextSymboler。转到geoserver管理-->样式-->添加新样式
添加一个TextSymblolizer,如下所示
<sld:NamedLayer xmlns:sld="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.
我有一个定义如下的基本映射(伪代码)
在map.addLayers调用之后,有一个displayData(theid),我想从html文档的主体中调用它,问题是我无法调用该方法。如果将onclick事件绑定到
JavaScript具有功能范围,这意味着displayData从外部看不可见
Ext.onReady(function() {
... stuff here is executed but is not visible from outside
}
要解决此问题,您可以在其外部声
试着用一张相当简单的地图站起来。我使用的是openlayers angular指令,同样的http请求和层设置也在工作(geojson特性在雄蕊层上方的一层上显示为红色向量)。现在,我决定我想要一个“香草”openlayers设置(见下文),我只能让雄蕊层显示出来。我会错过什么
让olMap=document.getElementById('olMap');
让parcelVectorSource=new ol.source.Vector();
让map=newol.map({
目标:olM
在openLayers 6.4.3中,从多个wms层获取信息的方法是什么?我在关于OL3的回答中看到了这一点
var wmsSource = new ol.source.TileWMS({
url: 'https://ahocevar.com/geoserver/wms',
// Add as many layers as you like here!!
params: {'LAYERS': 'ne:ne', 'TILED': true},
serverType:
我有一个添加了LayerSwitcher控件的Openlayer web地图。我需要这个来切换我的一些图层。但是我也在添加和删除一些图层,它们是暂时的,我不希望它们添加到LayerSwitcher控件中。
那么,有没有一种方法可以将图层添加到OpenLayers中,但不会自动添加到LayerSwitcher控件中?解决了这个问题。我需要在图层选项中添加“displayInLayerSwitcher:false” 解决了这个问题。我需要在图层选项中添加“displayInLayerSwitcher
我有一个使用OpenLayers的地图站点,它使用以下代码导入和显示GPX数据:
var lgpx = new OpenLayers.Layer.GML(gpxtracktitle, gpxfileaddress, {
format: OpenLayers.Format.GPX,
style: {strokeColor: plmapvars.colourarray[i%7], strokeWidth: 5, strokeOpacity: 0.7},
projection: ne
可以在openLayers中搜索地址吗
另一个问题是:那么有可能得到这个地址的地理坐标吗
或者可以从我用鼠标单击的位置获取地理坐标?仅OpenLayers不允许您搜索地址,但您可以使用外部web服务(如Google web services)来完成此操作。然后在OpenLayers上显示此信息
关于您的最后一个问题,OpenLayers可以为您提供鼠标单击的坐标。这里您可以找到一些适当的扩展:
我有370万个小多边形,我想从中创建一个热图。因为它有很多点,所以从JavaScript数组读取并在地图上绘制是不可能的。有什么有效的方法吗
谢谢。IMHO,370万个多边形对于Javascript来说看起来有点重。一个好方法是在服务器上生成热图。如果您使用的是Geoserver,则可以按照官方文档中的说明进行操作。请记住,使用渲染转换需要安装(但不需要启用)
配置热图表示后,OpenLayers客户端只需使用该层。多边形数据存储在哪里?您可能可以使用geoserver创建图层。数据存储在geo
当我使用Openlayers 2时,我可以组合各种过滤器,如Openlayers.Filter.Comparison.EQUAL_TO或Openlayers.Filter.Comparison.like,然后使用WFS协议和回调函数根据用户输入和那些本机WFS过滤器获取功能
在Openlayers 3中,我没有看到那些本机过滤器
那么,现在,我如何根据用户输入获取特性呢?我得到输入并向PostGIS进行老式查询?我重置了ol.Vector源url
请提供一些帮助或教程
谢谢您应该更改OpenLa
我有以下HTML代码
<html>
<head>
<title>Vector Style Examples</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.rawgit.com/o
当我把鼠标指针放在一张地图上时,我需要鼠标指针同时在另一张地图上可见(当然在同一位置显示)……所以在地图之间同步鼠标指针
如何实现这一点?在windows显示器上只能有一个真实的鼠标指针,但可以在每个地图上显示一个共享功能,该功能跟随任一地图上的真实指针。如果你想的话,你甚至可以用一个图标使它看起来像一个指针
var-white=[255,255,255,1];
VarBlue=[0153255,1];
var宽度=3;
style=新的ol.style.style({
图片:新ol.styl
撤销前
撤销后
我正在尝试使用Openlayers创建一个撤消功能,在该功能中,我可以打开一个绘制完成的多边形并再次继续绘制该形状。
不确定如何为多边形的每个点实现撤消功能
你能帮我找到解决办法吗
我在一些使用Openlayers的第三方库中看到了撤销功能,在这种功能中,当我们撤销时,整个形状将从地图中删除。
此外,我在Openlayers中看到了修改功能,在Openlayers中我可以向现有形状添加更多点并更改形状的结构。可以通过使用交互中的geometryFunction选项来使用现有特
如何使用Zoomify深入缩放OpenLayers图像
根据答案的提示,我能够实现缩放功能,但maxZoom在此不起作用,我无法进一步放大图像
DZI图像分析器
映射对象
如何删除缩放限制?我已经解决了
相同的代码:
function loadUrl(url) {
return new Promise(resolve => {
const layer = new ol.layer.Tile();
const last = url.lastIndexOf('.');
我使用openlayers版本6
我使用ol.layer.Tile定义显示地图的源
源是使用ol.source.XYZ定义的
但是,由于openapi的apikey包含在我必须发送到服务器的参数中,所以我需要在post方法中发送它
这不受支持吗?可以使用tileLoadFunction完成
var baseMap = {
testmap : new ol.layer.Tile({
visible : false,
sourc
我已经在地图中定义了一个WMS.Post图层,建议用于动态样式设置,因为我有一个依赖于我所要求的WMS图层特性的参数化过滤器。
问题是我需要在LegendPanel GeoExt对象中设置一个图例。我看到,当图例面板向geoserver请求图例时,会使用GET方法调用服务,当给定的sld样式太长时,调用失败。如何强制面板使用POST方法
这就是我的legendPanel的定义:
var legendPanel = new GeoExt.LegendPanel({
title: "Lege
我有一个使用OpenLayers库的应用程序
我创建一条比例线:
map.addControl(new OpenLayers.Control.ScaleLine());
但它同时显示米和英尺。我只需要显示米。
我将下一个代码添加到openlayers.css
.olControlScaleLineBottom {
visibility: hidden;
}
但它仍然显示ft。如何修复它?通过将topOutUnits或bottomOutUnits设置为空字符串,可以禁用scaleli
我有一张开放的街道地图
我使用OpenLayers
我想知道是否有办法获得地图上特定坐标的土地类型(例如:水、平原等)
我查了一下文件,但什么也没找到
谢谢。您可以使用CloudMake API进行地理编码:
您可以指定坐标,例如,查找指定坐标周围的道路:
您也可以以Json格式返回此信息谢谢您的帮助。我测试了这个API,它非常有趣和酷。不幸的是,我无法得到对象类型“water”的结果,我的意思是,有时它会找到水,但当我点击大西洋时,它什么也不会返回。我想BDD是不完整的。
我看不到地图上的标记。在表格中,我可以看到所有的点,但在地图上没有显示。
我想问题在这里:
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(venues.location.lat,venues.location.lng),icon));
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(venues.location.lat,venues.loca
我有一张地图,可以选择一些要显示的图层。层包含在变量“层”中,如下所示
var layers = [
new ol.layer.Tile({
source: new ol.source.OSM(),
name: 'OpenStreetMap',
visible: true,
}),
new ol.layer.Vector({
sou
1 2 3 4 5 6 ...
下一页 最后一页 共 16 页