1

为什么我不能向 Vector 添加功能?此代码不起作用:

var features = [new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(-70.702451, 42.374473), {className: "latarnia"})]

vectors = new OpenLayers.Layer.Vector("warstwa", {
strategies: [new OpenLayers.Strategy.Fixed()],
 protocol: new OpenLayers.Protocol.HTTP({
format: new OpenLayers.Format.OSM()
 }),
 features : features,
projection: new OpenLayers.Projection("EPSG:4326")});   

map.addLayers([vectors]);

我的意思是向量根本没有特征。我试过了

layer.addFeatures([feature]);

但它也失败了。

4

2 回答 2

1

看来您的地图和点的投影不一样。地图投影是 EPSG:4326 ,但点投影似乎是 EPSG:3857。

它可以帮助你

conv_latlon = new OpenLayers.LonLat(-70.702451, 42.374473).transform('EPSG:3857', 'EPSG:4326')//transform point 
var features = [new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(conv_latlon.lon, conv_latlon.lat), {className: "latarnia"})]
于 2014-07-15T13:43:02.793 回答
0

由于某种原因,在 OpenLayers.Layer.Vector 构造函数上初始化“功能”属性不起作用。

但是您应该可以在之后添加它们:

vectors.addFeatures(features);

然后您可以在浏览器控制台中进行测试:

vectors.features.length; //this should be 1 now

否则代码似乎没问题。您还应该能够将地图上的要素视为橙色圆圈(默认样式),但前提是该点的坐标在您的基础图层范围内。使用 OpenLayers 2.14 版进行测试。

于 2014-01-27T18:20:31.250 回答