我需要在站点的首页创建一个交互式世界地图,View门户大约为650x200像素。交互性将包括以下内容,将鼠标悬停在一个国家/地区上会突出显示(例如,这些国家/地区实际上会用“红色”填充)并显示国家/地区的名称(最好是div中的文本),我还将链接带有的突出显示事件将在选中时突出显示一个国家/地区。我很难找到合适的解决方案,我拒绝使用或学习闪存等专有技术,因此这不是一个选择。我使用openlayers和自定义map图像创建了一个简单的模型,但国家/地区的标记在IE6中加载速度太慢。而且svg似乎太大了,因为我尝试使用RaphaelJS,但是当我意识到世界地图数据是1.2mb这对于网站的首页
我在OpenLayers4(4.4.1)中有一个矢量层。该层具有多个具有LineString几何特征的特征。一些功能重叠。如果我在特征重叠的点上单击,我只想将其中一个特征绘制为选中状态。其他的应该仍然可供稍后选择(通过单独的UI选择列表中的功能ID)。如果我点击另一个特征ID(在单独的UI选择列表中),该特征应该被绘制为选中状态,而之前选择的不应该被绘制为选中状态,但在选择列表中仍然可用。这有效,但它只是第一个(默认)选定的要素似乎绘制在顶部。下图显示了特征ID10049被标记为选中的情况。下图显示了特征ID10048被标记为选中的情况。如果我在最南端的特征上单击它们不重叠的某个位置,
当我在OpenLayersmap中绘制多边形时,我想知道标记是否在多边形内部。我在OpenLayersAPI中搜索,但没有找到解决方案。你可以在这个link中看到我的完整代码.我的印象是我必须修改这个功能:functionaddInteraction(){varvalue=typeSelect.value;if(value!=='None'){draw=newol.interaction.Draw({source:vectorSource,type:/**@type{ol.geom.GeometryType}*/(typeSelect.value)});map.addInteracti
OpenLayers.Feature.Vector的API文档说Vector本身根本没有方法。我知道如何让用户通过添加OpenLayers.Control.DragFeature来移动Vector控制映射。因此,如果用户可以移动Vector,那么也必须有一种以编程方式移动它的方法。但我不知道该怎么做。 最佳答案 你移动一个OpenLayers.Feature.Vector通过在其geometry上调用方法来对象对象,而不是向量本身。这些方法包括移动、旋转、调整大小和变换。请注意,您不会在OpenLayers.Geometry基础对象
因此,我的openlayers实现的背景似乎被压成垂直条纹。奇怪的是,它并不总是这样,但即使我将所有更改存储回我知道它正在工作的地方,它仍然是坏的。这让我想知道瓷砖Assets的交付方式是否发生了变化。我已经尝试在使用osm和wms层之间切换而没有任何变化,我们将不胜感激。相关代码如下:initMap:function(){varview=this;varmap=this.map=newOpenLayers.Map();map.render(this.$map[0]);varwmsLayer=newOpenLayers.Layer.WMS("OpenLayersWMS","http:/
我们公司目前正在开发一种新的网络map解决方案。到目前为止,我们决定使用React构建应用程序和OpenLayers4.因为我们要使用Redux我们架构的模式将有一个保存应用程序状态的redux存储。这个栈我们面临的问题如下:map是我们应用程序的核心元素,它的实例需要传递给许多不同的组件。例如,在map上绘制要素的工具需要引用map实例,以便它可以将自己作为交互工具添加到其中。我们讨论了如何构建我们的应用程序以集成OpenLayers与React以最可靠的方式并最终采用两种不同的方法:我们讨论的第一种方法是在应用程序范围的redux存储中保存对map对象的引用,这样它就可以通过@co
如何获取map上的所有标记以便用户可以看到所有标记?我有一些标记。我在map上显示它们。中心LonLat我从我所有标记的lon和lat的最高和最低数字的平均值中得到。所以我使用以下方法将map设置为所有标记的中心点:map.setCenter(centerLonLat,8);8只是一个随机的缩放级别。有什么方法可以计算出完美的缩放级别,以便所有标记都显示在map上吗? 最佳答案 OpenLayers提供了一种类似的方法来避免循环getDataExtent()functionhere.您需要将它应用到包含标记的图层上:varnewBo
我试图找到一些提示,我应该在哪里搜索这个主题,但我什么也没找到-我在这上面花了很多时间。我还试图从OpenLayersmap中获取当前显示视口(viewport)的当前坐标,以仅添加当前视口(viewport)的当前边界框中的这些矢量。 最佳答案 对于OpenLayers2:Map.getExtent()...将返回一个Bounds,然后您可以使用它以多种方式获取纬度/经度坐标:http://dev.openlayers.org/apidocs/files/OpenLayers/BaseTypes/Bounds-js.html#Op
我使用OpenLayers并想在左上角创建另一个导航控件。我知道如何添加控件,但在创建OpenLayers-Map时默认添加此导航。所以我想删除那个控件,添加一个自己的控件。我已经知道,默认控件是OpenLayers.Control.PanZoom。 最佳答案 map对象有一个名为controls的属性,它是OpenLayers.Control对象的数组。如果未明确设置此属性,则OpenLayers将假定您需要默认控件集,包括OpenLayers.Control.Navigation()、OpenLayers.Control.Pan
我目前正在将我的OpenLayers2Mapview升级到OpenLayers3。我真的很喜欢新的OpenLayers客户端,但我想停用在移动设备上旋转map的功能(用两根手指旋转)。但是我找不到这方面的任何设置。这是不可能的还是我只是愚蠢地找到设置?我使用的是openlayersjavascript客户端的当前发行版(3.0.0)。(https://github.com/openlayers/ol3/releases/tag/v3.0.0) 最佳答案 是的,有一种方法可以停用旋转map的功能。您需要自定义ol.Map对象的交互。您