OpenLayers.Feature.Vector的API文档说Vector本身根本就没有方法.
我知道如何通过添加OpenLayers.Control.DragFeature控件来映射用户来移动Vector .因此,如果用户可以移动Vector,那么必须以编程方式移动它.但我无法弄清楚该怎么做.
每次我们向基于OpenLayers的网站添加新图层(主要由GeoServer服务器提供的数据)时,我们都会讨论是使用单个图块还是平铺图像.
我们评估的一些参数如下:
使用平铺方法我们得到:
使用单瓦方法我们得到:
我们在图层中进行了大量的数据编辑,因此图块缓存可能效率不高.
在平铺方面有没有最好的做法?
朝着无限快速的硬件和无限数据连接的方向发展,讨论变得无关紧要,但您认为哪种配置最令用户满意?
我无法找到一种方法,可以在不使用谷歌地理编码API的情况下将地址转换为长/纬度坐标.我正在使用Open Layers和Open Street Map,并且因为2.500次/天的限制而不得不避免google api.
我想控制OpenLayers中的缩放.
当缩放为3时我想加载KML1,当缩放为4时我想加载KML2.
你能告诉我如何控制变焦事件吗?
我有一个带有多个标记的图层,图标相当大,所以它们重叠.通过地图一侧的列表,用户可以选择一个标记,地图将平移(和缩放)到它.但它仍将落后于其他一些制造商.如何获得个体制造商z-index并设置它?获得最高使用的z-index并添加一个,我会很有用.(另一个解决方案是将标记的总数添加到z-index)
标记(或特征)位于myLib.features数组中.控制台不显示任何z-index类型的功能.
我无法为此找到合适的示例或api函数.
编辑:
我找到了这个例子:http://dev.openlayers.org/examples/ordering.html 我真的不明白它.不知何故,创建的特征通过某些符号化器获取图层给出的下一个z-index.我不知道如何将这种静态排序变成动态排序.
因此,我的openlayers实现的背景似乎被压缩成垂直条纹.奇怪的是它并不总是这样,但即使我把所有的变化都藏回到我知道它正在工作的地方,它仍然被打破了.这让我想知道是否有些东西已经改变了瓷砖资产的交付方式.我已经尝试在使用osm和wms图层之间切换而没有任何改变,任何帮助将不胜感激.
这是相关的代码:
initMap: function() {
var view = this;
var map = this.map = new OpenLayers.Map();
map.render(this.$map[0]);
var wmsLayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'});
var osmLayer = new OpenLayers.Layer.OSM();
this.layers = {
point: new OpenLayers.Layer.Vector("Point Layer"),
line: new OpenLayers.Layer.Vector("Line Layer"),
polygon: new OpenLayers.Layer.Vector("Polygon Layer")
};
this.setValue(this.value);
map.addLayers([this.layers.point, this.layers.line, this.layers.polygon, osmLayer]);
drawControls = {
point: new OpenLayers.Control.DrawFeature(this.layers.point,
OpenLayers.Handler.Point),
line: new OpenLayers.Control.DrawFeature(this.layers.line,
OpenLayers.Handler.Path),
polygon: new OpenLayers.Control.DrawFeature(this.layers.polygon,
OpenLayers.Handler.Polygon)
};
this.layers[this.layerType].events.on({'sketchcomplete': function(feature) {
if (!view.multiple) {
// deactivate polygon layer once …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenLayers在我的网站上显示自定义OSM地图.
我有一点要尊重:地图必须修复(意味着我们无法拖动或缩放它).
我有缩放问题,我无法用鼠标禁用缩放.有人有小费吗?
map = new OpenLayers.Map('map');
map.events.remove("move");
map.events.remove("movestart");
map.events.remove("moveend");
map.events.remove("zoomend");
map.events.remove("mouseover");
map.events.remove("mouseout");
map.events.remove("mousemove");
map.events.remove("zoomstart");
var nav = new OpenLayers.Control.Navigation({
defaultDblClick: function(event) { return ; }
});
map[index].addControl(nav);
Run Code Online (Sandbox Code Playgroud)
此外,如果有人提示删除所有导航事件比这更容易,将不胜感激.
获取OpenLayers.Feature.Vector像素坐标的最快方法是什么?我的意思是,我希望获得相对于已绘制特征的地图容器的像素(顶部,左侧)位置,如果可能的话,不进行计算,因为性能改进.
谢谢和问候,拉斐尔.
我正在尝试使用SVG图像在OpenLayers-3(OL3)中创建地图"pin-drops"(即地图标记).
目前,我正在使用PNG图像作为引用ol.style.Icon源("src")属性属性的pindrops.但是,这使用SVG图像失败.有没有其他方式以相同的方式使用SVG?也许通过使用ol.style.Icon之外的参考甚至?在Open Layers中已经有很多内置的SVG,所以这应该是可能的,但我还没有找到一种方法让它在OL3中运行.在OL3中还有其他一些我应该考虑的方法吗?
请注意:我们已经尝试使用ol.Vector图层,但是当用户放大/缩小时,SVG图像的大小会增大/缩小,这是一种不适当的解决方法.
OL3(失败):
var createMapMarkerImage = function() {
return function(feature, resolution) {
var iconStyle = new ol.style.Style({
image: new ol.style.Icon( ({
src: 'img/map_pindrop.svg' // OL3 doesn’t like this, but accepts a .PNG just fine
}))
});
return [iconStyle];
};
};
Run Code Online (Sandbox Code Playgroud)
非常类似的功能,是我在网上找到的以下示例,如果不是因为该示例使用OpenLayers-2(OL2)功能调用openlayers.js库(而不是OL3的ol.js库),则几乎是完美的.遗憾的是,交换这些javascript文件失败了.
OL2(工作 - 但是旧的 OL库):
http://dev.openlayers.org/sandbox/camptocamp/tipi/examples/vector-symbols.html
在线搜索解决方案似乎只会产生其他困惑的人在寻找解决方案.
请帮忙,
FreeBeer
我在OpenLayers 4(4.4.1)中有一个矢量图层.该图层具有几个LineString几何特征.一些功能重叠.
如果我在要素重叠的点处单击,我只希望将其中一个要素绘制为选定的.其他应该仍然可供以后选择(通过单独的UI选择列表中的功能ID).
如果我单击另一个要素ID(在单独的UI选择列表中),该要素应绘制为选中,并且先前选择的不应绘制为选中,但仍可在选择列表中使用.
这是有效的,但它只是第一个(默认)选定的功能,似乎在顶部绘制.
如果我点击它们不重叠的最南部特征上的某个位置,则会在顶部选中时正确绘制.
要跟踪需要在视觉上选择的功能,有一个变量:
var multiselectPrimaryId = 0;
Run Code Online (Sandbox Code Playgroud)
我使用以下selectInteraction代码:
selectInteraction.on('select', function (e) {
e.deselected.forEach(function (feature) {
feature.setStyle(null);
});
if (e.selected.length <= 1) {
$("#multipleHitWindow").hide();
multiselectPrimaryId = 0;
if (e.selected.length == 0) {
return;
}
}
var features = e.selected;
if (multiselectPrimaryId == 0) {
multiselectPrimaryId = features[0].getId();
}
if (features.length > 1) {
var text = "Multiple hits: ";
features.forEach(function (elem, index, array) {
text += "<a href='javascript:changeSelectedFeature("
+ elem.getId() + …Run Code Online (Sandbox Code Playgroud) openlayers ×10
javascript ×3
vector ×2
geocoding ×1
google-maps ×1
maps ×1
markers ×1
mousewheel ×1
openlayers-3 ×1
svg ×1
tiling ×1
z-index ×1
zoom ×1