Questions tagged «openlayers-2»

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

6
如何使用ST_Intersection?
以下是我要执行的操作的简要摘要:Postgres中有3个表,“ a”和“ b”,每个表都有一个Polygon列,而“ c”有一个Point列。我在这里要做的是获取“ a”,“ b”和“ c”之间的几何形状相交,并在OpenLayers矢量层上显示此类几何形状。 我已经知道如何在OpenLayers中显示字符串中的任何几何形状,但是我在使用PostGIS的ST_Intersection函数时遇到了麻烦,我正在这样做: SELECT ST_Intersection(a.geom, b.geom) as inter from a, b; 其中a.geom和b.geom都是几何列,并且我收到此错误消息: NOTICE: TopologyException: found non-noded intersection between 515172 2.14408e+06, 497067 2.13373e+06 and 501321 2.13546e+06, 471202 2.14843e+06 500621 2.13576e+06 ERROR: GEOS Intersection() threw an error! 我也尝试使用ST_AsText将生成的几何图形表示为文本,如下所示: SELECT ST_AsText(ST_Intersection(a.geom, b.geom)) as inter from a, b; 但它向我发送此错误消息: …

2
对圆半径使用大地测量?
我目前正在开发一个OpenLayers映射站点。可以使用线条工具和面积工具进行测量。如OpenLayers API所述,目前都将这两项设置为计算测地线。 我使用测地线测量,而不是平面测量,因为在用户测试期间,人们质疑工具的测量以获取其已知的距离(例如,在城镇之间行驶)。 该站点的新功能是使用户能够在设置半径的地图上绘制圆。OpenLayers仅允许使用平面距离绘制圆,因此,当用户使用测地线测量工具测量圆时,值将不匹配。在下面的图像中,圆的平面半径为10km,但是测地线的直径为12km。 显然,这会让用户(和我自己)想知道哪个是正确的。 看着这个答案,似乎大多数桌面GIS系统“忽略”了这个问题,并返回了平面尺寸和距离。那么,在处理平面和测地线测量的用户界面和准确性方面,最佳实践是什么? 更新资料 我找到了这个Google示例,该示例说明了半径和墨卡托投影的问题: http://maps.forum.nu/gm_sensitive_circle2.html 绘制圆圈的JavaScript代码如下: var lat1 = (PI/180)* center.lat(); // radians var lng1 = (PI/180)* center.lng(); // radians for (var a = 0 ; a < 361 ; a++ ) { var tc = (PI/180)*a; var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc)); var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y)); var …


4
正在寻找Google StreetView引擎的开源替代品?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 4个月前关闭。 这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 我正在寻找使用Leaflet或OpenLayers创建一个开源javascript应用程序。 有什么方法可以将全景图(类似于Google的StreetView)实现到其中一个或任何其他开放API中吗? 我的全景视图将根据个人照片定制,因此我无需从现有服务中获取全景图像。 我了解可以将Google StreetView集成到非Google应用中,但是有没有可以在不使用任何Google API的情况下为我提供类似功能的功能?

1
处理OpenLayers中的重叠功能
如果用户创建了一个完全与另一个重叠的多边形要素,例如…… …那么就无法选择内部特征,即一个被另一个重叠。我目前正在使用这样的简单方法SelectFeature: var select = new OpenLayers.Control.SelectFeature( [this.annotationLayer, this.controlPointsLayer], { hover: true, renderIntent: "temporary" } ); this.map.addControl(select); select.activate(); 但是显然,我只能选择外部特征。处理此问题的典型方法是什么?如何使用户也可以选择内部特征? 最简单的解决方案可能是使外部特征仅在减去内部特征时在剩下的区域内可供选择-但我不知道如何去做。

2
支持更多客户端功能的OpenLayers替代产品
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我正在考虑系统的不同体系结构,这些体系结构理想地将客户端渲染用于点要素,并且必须是无插件的。我一直在使用针对此问题而开发的应用程序来测试我的笔记本电脑(功能相当强大-四核2.6 ghz cpu,4 gb内存,没有任何其他负载,Firefox 8)在OpenLayers和它明显落后于500,开始挣扎超过1000。随机生成的功能似乎没有任何事件处理程序,并且都使用相同的符号系统。 我预计将在功能不强的平台上显示多达1,000个功能,最多包含10个不同的符号,全部带有单击和鼠标悬停处理程序。 我一直希望获得更好的客户端性能,尤其是在看到此GIS Cloud示例之后 -我知道它的工作方式有所不同(HTML5 canvas与SVG),但是性能上的差异确实惊人。 我的关键问题(如果您愿意的话)是: 生成随机点的应用程序代表您编写/使用的其他OpenLayers应用程序中的性能吗? 是否有一个经过验证且免费的替代Web映射API,该API支持WMS服务(我需要使用),并且具有客户端功能,而无需使用Flash / Silverlight /任何其他插件,速度更快? 关于我应该调查的内容还有其他建议吗? 主要依靠服务器端呈现是一种选择,但是由于担心扩展用户数量和UI的响应性,我和客户端都希望避免这种情况。

4
OpenLayers:如何使用SLD文件设置WFS图层的样式?
我正在尝试在Win 2008 Server的PostGIS / GeoServer / OpenLayers堆栈上构建一个简单的Web映射服务。 我使用以下方法覆盖了PostGIS的矢量层: var Index1v = new OpenLayers.Layer.Vector("Index1 v", { strategies: [new OpenLayers.Strategy.BBOX()], protocol: new OpenLayers.Protocol.WFS({ version: "1.1.0", url: "http://localhost:1979/geoserver/wfs", featureType: "bern_poly_s100", featureNS: "http://www.ispm.ch", srsName: "EPSG:900913" }) }); 图层正确显示,但显示为GeoServer默认的默认[?]样式。 我已经使用uDig构建了SLD样式的文件,由于WMS服务正在使用它而没有任何问题,因此这似乎是正确的。是否可以使用它来设置WFS图层的样式?

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: …

2
OpenLayers 2.12和HTTP基本身份验证问题
我正在尝试使用OpenLayers 2.12从启用了HTTP基本身份验证的服务器上显示WMS图层。 我试图通过将用户名和密码放在我的JavaScript代码的URL参数中来处理身份验证。图层创建示例: myLayer = new OpenLayers.Layer.WMS('background', 'https://username:password@ws.nls.fi/rasteriaineistot/image?', { layers: 'background', bbox: '-380188,6249943,1347312,8226943' }, { displayInLayerSwitcher: true, isBaseLayer: false, projection: 'EPSG:3067', visibility: true }); 当然,这是不安全的,因为凭据存储在JavaScript代码中,并且不能在所有浏览器中使用。Internet Explorer 8给出指向OpenLayers.js的安全错误,并且根本不显示该地图。Firefox 13弹出了一些我可以取消的身份验证对话框(此后,地图会正确显示)。在Chrome 23中,身份验证似乎完美无缺。 您是否可以通过将其编码为URL并将其提供给OpenLayers来确认无法以跨浏览器的方式处理HTTP基本身份验证? 您能否建议其他方法来处理HTTP基本身份验证,以使其对用户透明(不显示身份验证弹出窗口)?也许使用某种代理服务器来解决此问题。

4
如何在OpenLayers 2的Google图层上叠加纬度/经度点?
我在OpenLayers的Google层顶部的纬度/经度中添加了矢量点。当我平移地图时,点正在移动。如果我将Google图层替换为WGS84中的图层,则不会发生这种情况。我怎样才能解决这个问题? map = new OpenLayers.Map('map'); map.addControl(new OpenLayers.Control.LayerSwitcher()); var gmap = new OpenLayers.Layer.Google( "Google Streets", {numZoomLevels: 20} ); var pointLayer = new OpenLayers.Layer.Vector("Point Layer"); map.addLayers([gmap,pointLayer]); map.setCenter(new OpenLayers.LonLat(16.373056, 48.208333), 5); var point = new OpenLayers.Geometry.Point(16.373056, 48.208333); var pointFeature = new OpenLayers.Feature.Vector(point,null,null); pointLayer.addFeatures([pointFeature]); 我尝试遵循http://docs.openlayers.org/library/spherical_mercator.html,但没有成功。

2
当用户放大到OpenLayers中的地图时切换基本层吗?
我有一张地图,在宾夕法尼亚州的影像上覆盖了开放街道地图数据。作为道路(最后是其他图层)的基础层,我有两个基础层-Blue Marble NG和USGS EROS 1ft图像。我希望能够将这两层组合成一个基本地图对象,该对象会随着用户放大而自动切换,因为在放大时查看整个状态的1英尺图像或蓝色大理石图像是没有意义的。 理想情况下,我想在客户端执行此操作,因为我要从两个不同的站点提取图像。

9
国际日期变更线环绕
使用OpenLayers,我在GeoServer上添加了一个WFS图层,并带有一个过滤器,该过滤器返回在某些日期内与某些拉丁美洲国家/地区的多边形(黄色)相交的所有要素(黑色)。 但是,在地图上水平交叉的要素实际上并未与我的多边形相交。此功能位于夏威夷和斐济之间的太平洋中,而不是拉丁美洲。问题在于,它没有跨越国际日期变更线,而是通过环绕整个世界呈现在地图上。 常见功能定义如下: 聚((-179.700417 14.202717,-178.687422 13.992875,179.024138 8.24716,-179.98241 8.035567,-179.700417 14.202717)) 我有很多有问题的日期行功能,例如本示例。我不能在我的应用程序中忽略它,因为我有很多。 我尝试在基础层和WFS层中使用“ wrapDateLine:true”,结果相同。 不知道这是GeoServer问题还是OpenLayers问题。 有人知道我的国际约会安排问题的解决方案吗?

5
OpenLayers教程?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我需要创建一个显示许多栅格图层的网络地图。我正在使用mapserver,并且想使用Openlayers,但是找不到关于它的任何好教程。我看到几个老问题(第1和第2个)说,没有好的文档。事情最近有变化吗? 我想找到一个从基础到相当复杂的东西的教程,对代码和结果的图片/示例都有很好的解释。目前,我仅使用.map文件制作了最简单的网络地图,但我需要对其进行自定义(添加图例,组图层,添加更多控件,嵌入等)。

2
在OpenLayers中启用CORS
是否可以在OpenLayers中启用跨域资源共享(CORS)?如果是这样,怎么办? 我在OpenLayers中有一个网络地图,并且正在使用HTML画布将其呈现为PNG图像。我的脚本效果很好,但是由于浏览器的同源策略,如果我绘制到其上的所有地图图块都来自同一主机(例如sub.domain.com),我只能将其转换为图像。 为了提高地图的加载速度,我从一系列子域中拉取了磁贴:a.domain.com,b.domain.com等,这大大提高了性能,可以解决浏览器每个主机同时进行四个连接的限制,但是却无法将画布转换为图像,例如磁贴来自多个主机。 我正在尝试使用CORS来解决此问题。我Access-Control-Allow-Origin为与PHP一起使用的tileset 设置了适当的响应标头,但这没有效果。我怀疑这是由于请求中没有Origin标题(如Wiki页面上的示例所示)。似乎需要某些OpenLayers配置。但是呢 其他人成功完成了吗?

4
现在迁移到OpenLayers 3是个好主意[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我想知道OpenLayers 3是否足够可信,现在就可以开始将应用程序迁移到它。版本2和版本3之间的差异是否太重要,以致旧代码无法正常工作?OpenLayers 3的主要改进是否像3D一样经过足够的测试?

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.