2012-11-17 27 views
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]); 

但它也失敗了。

回答

0

由於某些原因,在OpenLayers.Layer.Vector構造函數上初始化「features」屬性不起作用。

但是,你應該能夠在後面加上他們:

vectors.addFeatures(features); 

然後,您可以測試在瀏覽器控制檯:

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

否則代碼似乎確定。 您還應該能夠在地圖上看到該特徵爲橙色圓圈(默認樣式),但前提是該點的座標位於基礎圖層範圍內。 使用OpenLayers版本2.14進行測試。

1

看來你的地圖和點的投影是不一樣的。 地圖peojection是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"})]