Questions tagged «openlayers-2»

当您使用OpenLayers JavaScript客户端工具包的2.x版本时,请使用此标记。

4
使用OpenLayers在日期线上分割线串
几年前,我发布了国际日期变更线,@jdeolive 建议我在dateLine 拆分功能。所以我尝试了。 当我尝试在日期线上使用splitWith拆分卫星轨道时,我回来了null。我知道我的分裂是正确的,因为当我在格林威治线上分裂时,我得到了预期的结果。 有人知道我如何才能使用OpenLayers在日期线上以编程方式正确分割Linestring吗?我寻求示例代码(如果有)。 我已经尝试过了,wrapDateLine但是尽管我的向量层是这样的,但它似乎在向量层上似乎没有作用: vectorLayer = new OpenLayers.Layer.Vector("GroundTracks", { renderers: ['Canvas', 'VML'], wrapDateLine: true}); // <-- shoud be wraping. 这是我的代码: var features = []; var format = new OpenLayers.Format.WKT({ 'internalProjection': map.baseLayer.projection, 'externalProjection': prjGeographic }); var satTrack = format.read("LINESTRING (95.538611 13.286511, 94.730711 16.908947, 93.901095 20.528750, 93.043594 24.145177, 92.150978 27.757436, …

7
如何使用基本OSM和Geoserver WMS图层打印Openlayer?
我有一张要在用户打开某些图层后打印的地图。这些层是geoserver wms,基础层是OSM。 我知道geoserver具有打印模块(该模块已安装并且可以正常工作,因为我收到geoserver / pdf / info.json?var = printCapabilities的回复 我不了解的是如何使用它来打印具有可见图层的当前地图。 我看过GeoExt示例(mapfish),但并没有帮助我理解。 更新1: 我通过代码生成了以下URL: http://77.235.53.170/geoserver/pdf/print.pdf?spec={%22units%22:%22degrees%22,%22srs%22:%22EPSG:4326%22,%22layout%22:%22A4%22,%22dpi%22:%22300%22,%22mapTitle%22:%22This%20is%20the%20map%20title%22,%22comment%22:%22This%20is%20the%20map%20comment%22,%22resourcesUrl%22:%20%22http://77.235.53.170/img%22,%22layers%22:[{%22baseURL%22:%22http://77.235.53.170/geoserver/Lehavim/wms%22,%22opacity%22:1,%22singleTile%22:true,%22type%22:%22WMS%22,%22layers%22:[%22%D7%A7%D7%95%20%D7%9E%D7%99%D7%9D%22],%22format%22:%22image/jpeg%22,%22styles%22:[%22%22]}],%22pages%22:[{%22center%22:[3875254.1134954,3680894.557955],%22scale%22:32000,%22rotation%22:0}]} 而且我得到的PDF为空(仅包含标题)...可能出什么问题了?

1
在移动混合应用程序中离线显示地图的可能方法
我想开发一个可在Android和iPhone设备上运行的移动混合应用程序,并希望在其中显示自己的地图数据。我有需要数据的SHP文件。我有Geoserver和PostGIS,可以在线加载和提供地图数据。到目前为止,一切都很好。 我的问题是我仍然没有找出脱机显示地图数据的正确方法。尽管我在本网站上已阅读了许多答案,但似乎都没有解决(根据我对我问题的理解)。 目的是在地图上显示交叉点。离线。某些间隔点没有地址。我想满足这些要求: 如何离线提供地图数据和内容给用户设备 如何提供用户路由选项以将其从当前位置导航到目的地 如何在应用程序内部从WordPress CMS添加内容数据?(通过JSON?GeoJSON?GeoRSS?) 一直在寻找和寻找许多Tile服务和许多方法来达到要求,但是仍然没有找到正确的组合。 对于应用程序的开发,我一直在使用PhoneGap XDK,Eclipse ADT。为了在移动设备上显示地图,我使用的是OpenLayers mobile。 期待您的建议或演练。 提前谢谢你

2
如何取消选择Openlayers中的功能?
我可以使用以下几行来识别地图上的选定要素: vector_layer.selectedFeatures 我希望能够使用独立功能(而不是事件处理程序)取消选择此功能。我尝试使用函数unselect(),unselectAll()但未成功,找不到此方法的任何示例。 我知道单击所选对象可以用来unselect。在这种情况下,我需要一个编程解决方案。

2
开源Python / PostGIS原型的最佳设计
我正在编写通过apache交付的数据密集型Web应用程序。我的问题是考虑到存在多个选项,如何最好地安排处理。 我可以使用OpenLayers / JQuery / Javascript,PostGIS / Postgresql(带有pgsql),python / psycopg2,php。 该数据库包含约300万行,原型当前运行如下: 用户在OpenLayers窗口上单击一个点 坐标作为AJAX请求发送到服务器上的python函数 目前,我的应用程序是无状态的 Python的psycopg2用于调用pgsql存储过程,并且将较大的WKT值集(和数据字段)返回给python模块 数据字段用于按以下方式对python中的WKT记录进行分类:所有WKT值均分为5组之一。实际修改了大约1%的WKT值。 WKT的五个集合/组被缓冲以创建五个不同的多边形。我目前在数据库中调用存储过程来执行此操作。反过来,这仅使用ST_BUFFER。(我已经考虑过使用Shapely,但由于在两种情况下都使用GEOS库,因此不确定会带来性能优势。) 最后,将5个WKT文本值包装在JSON字符串中,然后发送回OpenLayers以呈现为五层。 我发现瓶颈是初始空间搜索和最终缓冲阶段。 我想问题是: 有没有更好的方式安排东西?例如,是否所有数据处理都应在PostgreSQL中完成(例如,使用游标),这在维护和性能方面是否是一件好事?使用切片服务器来避免将较长的WKT字符串传递到Web客户端会更好吗?您将如何解决?

3
如何在画布调整大小上重绘/刷新地图?
我创建了一个网页,其中包含一个用于将地图设置为全屏并返回其正常形式的按钮,直到我调整输出窗口的大小之前,问题地图都不会设置为全屏,如何解决此问题, 任何指导和帮助表示赞赏。 这是工作示例:演示


5
在OpenLayers中使用两个不同投影(球形墨卡托和WGS84)的基础层
如何添加具有两个不同投影的基本层? 我添加了具有不同投影的覆盖层(EPSG:4326),但是我需要添加具有各种投影的基础层 谷歌地图 我的带有EPSG:4326投影的矢量层 我可以看到Google Maps一切都很好,但是当我将基本层切换到EPSG:4326层时,一切都是白色的。 window.onload = function init(){ var lon = 84; var lat = 28; var zoom = 8; var url = "http://10.6.7.6/geoserver/wms"; var mapControls = [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher({'ascending':false}), new OpenLayers.Control.ScaleLine(), new OpenLayers.Control.MousePosition(), new OpenLayers.Control.OverviewMap(), new OpenLayers.Control.KeyboardDefaults() ]; var map = new OpenLayers.Map( …

1
如何设置由DrawFeature控件创建的特征的样式?
我一直在关注本教程:http : //workshop.pgrouting.org/chapters/geoext_client.html#select-the-start-and-final-destination 它包含一个在以下代码示例中定义的Openlayers.Control.DrawFeatures控件。您还可以在作者评论的行中看到“如果要对起点应用特殊样式,则应在此处进行”。问题是:我不知道如何在此设置中应用样式,并且无法以这种方式使用DrawFeatures控件找到任何示例。 如何使用此DrawFeatures控件使起点使用与终点不同的样式? DrawPoints = OpenLayers.Class(OpenLayers.Control.DrawFeature, { // this control is active by default autoActivate: true, initialize: function(layer, options) { // only points can be drawn var handler = OpenLayers.Handler.Point; OpenLayers.Control.DrawFeature.prototype.initialize.apply( this, [layer, handler, options] ); }, drawFeature: function(geometry) { OpenLayers.Control.DrawFeature.prototype.drawFeature.apply( this, arguments ); if (this.layer.features.length == 1) …

3
在openlayers中设置雷达数据动画的最佳方法
我有一个使用OpenLayers的项目,该项目在地图上显示雷达数据。雷达数据本身就是一堆多边形,每个多边形都填充有6种可能的颜色之一。目标是为地图上的雷达设置动画。每个文件都包含给定时间的雷达数据,并且文件间隔约5分钟,因此我目前的方法是遍历所有文件,并将它们一个接一个地加载到新的单独层中。创建每个图层后,将其可见性设置为false并将其添加到地图中。然后,我使用计时器为图层设置动画,该计时器可打开一层的可见性并关闭上一层的可见性。目前,这些图层都是矢量图层,并且数据是从KML文件加载的,尽管数据文件几乎可以是最适合该项目的任何格式。 这种方法的问题是,一旦我遇到相当长的时间跨度(大约3个小时左右)的数据(约等于36层),内存消耗就会变得非常高(大约250mb)。最终产品应该能够在一个循环中处理多达18个小时的数据,根据上述数字,仅动画就需要超过1GB的内存,并且有可能使浏览器崩溃或至少使其速度缓慢。 我尝试对每个图层使用WMS图层进行相同的操作,但是重绘速度太慢(动画每100毫秒更改一次图层),并且内存消耗并不比矢量版本好多少。 我搜寻了网络,试图找到一些如何执行此操作的示例,但是到目前为止,我空手而归。有没有人对如何执行此操作有任何建议?由于我已经坚持了好几个星期了,所以我会考虑您的任何想法,因为没有答案。


2
如何在不丢失现有选择的情况下将图层添加到SelectFeature?
我正在使用OpenLayers.Control.SelectFeature进行多层选择。但是,当我使用setLayer()添加图层时,其他图层上的选择都会丢失。 有人知道如何解决此问题吗?当我向SelectFeature控件添加图层时,我希望将现有选择保留在其他图层上。 这是一个例子: 我的例子 更新: 我知道这是API的一部分。但是我正在寻找解决方法。 /** * APIMethod: setLayer * Attach a new layer to the control, overriding any existing layers. * * Parameters: * layers - Array of {<OpenLayers.Layer.Vector>} or a single * {<OpenLayers.Layer.Vector>} */ setLayer: function(layers) { var isActive = this.active; this.unselectAll(); this.deactivate(); if(this.layers) { this.layer.destroy(); this.layers …

2
如何更改已经显示的Feature.Vector的外观?
我已经从Point对象创建了一堆Feature.Vectors并为其分配了样式。现在,我想实时动态更改其中一项功能的外观。例如,将其从红色更改为蓝色。(我没有将鼠标悬停在此功能上。)我尝试过更改其样式,然后在图层上进行refresh()或redraw()等,然后什么也没有发生或功能消失了。有什么建议么?谢谢。

3
OpenLayers与StreetView重叠
我试图在我的OpenLayers网络应用中添加StreetView功能,并希望将显示StreetView可用性的叠加层添加到地图本身。我已经看到了正在做的成功它的一个例子在这里,但我不能让代码工作在我自己的解决方案。具体来说: var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true}); layer.mapObject.addOverlay(new GStreetviewOverlay()); 导致错误: layer.mapObject is null 有谁知道我可能在做错什么,如果是这样,我该如何解决?

4
在OpenLayers中重新投影基础层
我在北美的某些地方有矢量/地形/图像平铺地图,这些地图已发布为ArcGIS Server REST服务。这些地图(A)基于EPSG:26912投影。现在,我想将这些用作我的OpenLayers Web应用程序的底图;此外,我还想使用其他基础地图资源(B),例如OpenStreetmap,Google Maps,ESRI等。由于这些地图大多数位于EPSG:900913中,据我所知,这是球形墨卡托投影,如果我添加这些如果将基本地图图层放入OpenLayers地图组件,则A组和B组将无法正确覆盖,这意味着它们将显示为单独的地图。 我知道这与投影有关,可能需要用proj4js编写一些代码,但是,作为一个新手,我真的不知道从什么开始。 基本上,我想将OSM / Google地图作为第1层的整个世界的基础地图,然后将EPSG:26912北美某些地方的基础图放在第2层,然后将其他WMS或WFS放在顶层。 我需要将EPSG:26912转换为EPSG:900913还是相反?我想我应该使用EPSG:900913作为基本投影。

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.