Questions tagged «openlayers»

当您使用的OpenLayers JavaScript客户端工具版本为3或更高版本时使用

7
创建具有GISCloud等渲染性能的矢量多边形?
我一直在寻找一种可靠的解决方案,该解决方案使我可以创建网络地图并覆盖矢量多边形,而无需花费太多时间来加载此类数据,目的是使我能够使每个多边形在悬停事件上显示不同的颜色。 据我所知,可以通过3种画布,SVG,Flash来实现这一目标。 如果Flash能在苹果iPhone / iPad上运行,它似乎是最好的解决方案,因为它似乎提供了最快的渲染速度和最干净的显示效果。画布似乎是第二好的选择,但是如果您要在地图上显示数百个多边形,则花费非常长的时间,而SVG需要花费更长的时间来渲染。 我几乎找不到希望解决该问题的解决方案的希望,但今天我遇到了一家名为GISCloud http://www.giscloud.com的公司(当前处于Beta版,具有免费注册)。 这家公司使SOMEHOW设法找到了一种惊人的方式来近乎实时地在地图上渲染数百个矢量。我对他们的方法感到惊讶,我向社区提出的问题与我们如何复制他们的方法以与现有技术一起使用,如传单,开放层,蜡... 通过查看此惊人的演示来自己看看:http : //www.giscloud.com/map/284/africa 确保将鼠标悬停在页面上的所有多边形上,并测试缩放控件,以确保这些多边形确实是矢量。 通过查看带有Firebug的请求,我已经注意到,该地图正在请求特定的json文件。似乎根据缩放级别/区域,有多个json文件被请求。 我还要在这里提到,一旦giscloud将数据加载到页面上,将鼠标悬停在矢量上就可以立即更改颜色,而无需创建新请求。 例子: http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/3/3.json http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/5/3.json http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/4/4.json http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/3/4.json http://cft1.giscloud.com/t/1316509973/map284/layer1156/3/5/4.json 我假设url结构遵循标准的切片服务逻辑(例如,第3到最后一个文件夹是缩放级别...)。 无论如何,我已经分析了这些json文件的实际数据,并且看来他们使用的逻辑遵循某种逻辑,即它们仅基于这些数据值来创建矢量: 宽度/高度:它们定义每个json请求中提供的数据的宽度和高度 像素:在这里它们定义了像素值,我假设它们与某种广义点级别的一些一般x / y像素坐标有关?我猜他们会以某种方式根据缩放级别自动简化区域。我假设它们使用像素坐标,我猜想它们与经/纬度数据相比正在极大地减少需要加载的数据的大小。 样式:此处定义了两个RGB css值。“ F”代表多边形文件颜色,“ S”代表多边形边界颜色。 geom:这是我猜测它们在某种程度上定义的地方,具体定义正在加载的图块中的每个多边形,其中基于地图容器窗口定义此类数据。有趣的是,每个条目都有一个“ S”值,我假设该值用作可选属性或特征链接值,并且在每个条目的末尾都有一个区域,似乎在定义每个矢量ID的同时我猜测的层ID被用来以某种方式加入来自每个被调用的json磁贴请求的数据。 我还假设他们以某种方式找到了一种方法,可以根据需要为请求的图块加载的数据大小,自动确定并拆分每个图块需要加载的数据。 以下是这些请求之一的摘要: {"width":256,"height":256,"tile": {"pixels": [0,6461,-1,0,5,148,0,509,-1,10715,-1,1,-1,251,-1,1,-1,1,-1,251,-2,3,-1,255,-1,249,-2,5,-2,247,-1,509,-3,251,-1,2,-2,253,-2,252,-2,254,-1,255,-1,254,-1,255,-1,1276,-2,13,-1,233,-1,2,-1,253,-1,1,-1,255,-1,247,-1,1306,-1,1533,-1,1269,-1,1276,-1,2303,-1]}, "styles": [{"f":"rgb(99,230,101)","s":"rgb(5,148,0)","lw":"0"}], "geom": [ {"s":0,"p":[4,143,5,144,3,146,1,146,2,143,4,143],"c":"layer1156_5098"}, {"s":0,"p":[-2,143,0,140,2,141,2,144,1,146,-2,144,-2,143],"c":"layer1156_5067"}, {"s":0,"p":[7,143,5,144,4,143,2,143,2,141,5,138,6,139,5,141,7,143],"c":"layer1156_5051"}, {"s":0,"p":[10,141,11,137,12,137,14,137,12,142,9,143,9,142,10,141],"c":"layer1156_5041"}, {"s":0,"p":[1,136,0,140,-2,143,-2,136,1,136],"c":"layer1156_5038"}, {"s":0,"p":[8,143,5,141,5,137,8,136,10,137,10,141,8,143],"c":"layer1156_5033"}, {"s":0,"p":[5,137,2,141,0,140,1,136,1,136,2,135,3,136,5,137],"c":"layer1156_5028"}, {"s":0,"p":[10,134,12,136,11,138,8,135,10,134],"c":"layer1156_5020"}, {"s":0,"p":[-2,133,0,136,-2,136,-2,133],"c":"layer1156_5005"}, …

6
OpenLayers矢量层中的最大点要素数量
以您的经验,可以在不易变慢的OpenLayers矢量层(新的OpenLayers.Layer.Vector(“ Point Layer”))上添加多少点要素? 我的用例是显示数据库表中的点。用户可以决定可视化的时间范围。因此,结果可能从极少到十万分。我想引入一个合理的限制,并警告用户查询是否返回更多功能。

6
创建一个小的Web映射/地图平铺服务
我正在寻找一种小规模,简便的方法来在线显示一个或多个多边形shapefile(准确地说,是在没有任何现有地图服务器基础设施的市政网站上)。现在,我正在使用QGIS进行所有工作,我希望保留所有开源资源(没有预算可用于任何大型软件投资)。 研究这个话题导致了很多可行的方法,这让我很困惑。我正在寻找的是 能够在专题图中显示分类的多边形(-如果可能,最好弹出窗口或能够检索属性信息-但这是高度可选的) 我希望在QGIS中完成大多数工作(样式等) OSM作为基本图会很好 到目前为止,OSM基本地图上的自定义地图图块看起来就像我正在寻找的东西(还是有更好的解决方案)?创建这些磁贴的最佳方法是什么?

7
在OpenLayers中显示PostGIS矢量的选项
我是Web映射的新手,因此这个问题可能会被误导。 我希望有一个使用OpenLayers(甚至更简单的Google Maps)的非常简单的Web界面,它可以显示PostGIS中当前的许多点和多边形表。 我希望这尽可能简单(且维护成本低): 我不想创建图块(除非有充分的理由),也不希望拥有庞大,复杂的中间件层。 性能不需要是惊人的,因为这是供内部使用的,因此不需要扩展到几个并发用户。 矢量层的样式至关重要。 开源工具是首选,因为我对此几乎没有预算。 推荐的方法是什么?


1
手动将要素添加到ol3中的矢量层
我正在尝试使用javascript将图层手动添加到矢量图层。我似乎无法确定失败的原因: http://jsfiddle.net/Kieveli/f4t6n6v1/4/ 我已经尝试了16、22之类的合理坐标,以及一些大的坐标来匹配视图的xy值。我从ol3收到一个JavaScript错误:TypeError:bQ不是一个函数。 HTML: <div id="map" class="map"></div> Javascript: var vectorSource = new ol.source.Vector({}); var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.MapQuest({layer: 'sat'}) }), new ol.layer.Vector({ source: vectorSource }) ], target: 'map', view: new ol.View({ center: [-11000000, 4600000], zoom: 4 }) }); var thing = new ol.geom.Polygon( …

4
Openlayers 3最大范围
我想限制用户可以在地图上平移的位置,但是我似乎找不到任何资源来说明如何在OpenLayers 3中设置地图视图的最大范围。我知道OpenLayers 2中有一个解决方案。有可能在新版本中?

1
在OpenLayers 3中暂停WMS图层自动刷新吗?
我有一个必须在从服务器获取WMS切片之前执行HTTP请求(它将处理一些地图转换)的应用程序。 拖动地图后,有没有办法暂停TileWMS自动刷新? 设置不可见或删除并添加该层将起作用,但是我不希望该层在执行HTTP请求时消失。我也尝试过,setUrl('')但该图层也将消失。 我还尝试阅读OpenLayers源代码,以定义在执行请求之前要检查的属性,但是我在发出请求的代码中找不到。
14 wms  openlayers 

1
在OpenLayers 3放大时如何调整功能大小并防止其缩放
我已经初始化了一个自定义的OpenLayers 3地图(用于显示附近要出售的房屋),并以图像作为地图。 然后,我为每个房屋动态创建附加要素和图层(每个要素的锚点设置为其图像的中间)。 我一直在尝试size初始化功能时使用该属性,但是它所做的是裁剪图像而不是调整其大小。 我想我已经resize在OL2的某处看到了图层的功能,但是在OL3中找不到了……那种功能会达到我想要的结果吗? 还有一个问题是,缩小地图时要素缩放比例过大,放大地图时要素缩放比例过小。有没有一种方法可以指定特征的坐标,然后在其周围进行某种不可见的边距/填充以防止其过大或过小(某种静态尺寸)? 这是特征的实际行为(这里看到的特征是黑房子): -接下来:完美的尺寸,但是缩小房屋时应该小得多(如第一张图所示)。-房子应该保持更大,而不是在最后一张照片中再次缩小。。
14 openlayers 

3
更改OpenLayers 3视图中心
我正在使用OpenLayers 3与某些地图进行交互。我首先声明我的地图: map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: [0, 0], zoom: 2 }) }); 我有一个事件触发操作,以更改地图的视图中心。这样,(我的坐标是EPSG:4326格式): function CenterMap(lat, long) { console.log("Lat: " + lat + " Long: " + long); map.setView(new ol.View({ center: ol.proj.transform([lat, long], 'EPSG:3857', 'EPSG:4326'), zoom: …

5
OpenLayers 3中的Z索引:OL3中的图层排序
是否像旧版本一样,可以在OpenLayers3中更改图层的Z索引? map.setLayerIndex(markers, 99); //set the marker layer to an arbitrarily high layer index 我需要在整个地图中更改图层顺序。所以像这样定义z-index的可能性没有帮助 var geoLayer = new ol.layer.Vector({ source : new ol.source.GeoJSON({ projection : 'EPSG:900913', url : './myGeoJson.json' }), style : function(feature, resolution) { var text = resolution < 5000 ? feature.get('name') : ''; if (!styleCache[text]) { styleCache[text] = …

4
在OpenLayers3中缺少LayerSwitcher?
我想知道LayerSwitcherOpenLayers 3中是否有控件? 我读到ol3是完整的重写。但是我似乎无法LayerSwitcher从http://openlayers.org/en/latest/apidoc/ol.control.html找到与之等效的东西。我看不到没有此控件如何打开和关闭图层。是否已LayerSwitcher重命名为其他名称,丢失或文档不完整? 如果OpenLayers3没有LayerSwitcher,没有人知道实现自定义控件的示例,例如旧的LayerSwitcher吗?


1
OL3中的虚线?
我知道之前已经问过行破折号不起作用OL3(Openlayers 3),但是提出的解决方案不起作用。 我的代码是: var calculateStyle= new ol.style.Style({ fill: new ol.style.Fill({ color: [255, 255, 255, 0.6], opacity: 0.3 }), stroke: new ol.style.Stroke({ color: [0, 153, 255, 1], linedash: [40,40], width: 3 }) }); 我尝试了两者,[4,4]并[40,40]在链接的问题中提出了建议。但这不起作用。

4
在Internet上托管GeoServer + Openlayers Web制图应用程序?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我已经使用GeoServer(在Tomcat上作为servlet运行),Openlayers和PostGIS创建了一个Web制图应用程序原型。由于它是原型,所以在那时,我不必理会它的托管方面。在我的(笔记本电脑)本地主机:8080上运行正常。 现在,作为我工作的一部分,我被要求开发类似的应用程序,但这一次它必须在网络上运行,以便x人可以通过www访问它。我工作的代理商有一个正在运行的网站,但是他们希望它成为一个独立的网站,与网站分开托管。 这些是我的问题: 为了将Web映射应用程序托管在Web上,以便代理机构的Intranet之外的某个人(例如,对于我而言,不是localhost的其他人)也可以访问它,应遵循哪些步骤/选项?(考虑到我有一个只能通过本地主机运行并可以访问的主机,现在我希望其他人也可以在其计算机上访问它)。 如果是这样,我该如何实施?如果代理商决定将来将其作为其网站的一部分。 我已经阅读了一些帖子和与之相关的回复,但是我感到困惑,所以我希望有人可以帮助回答我的特定查询。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.