我有一个OpenLayers.Map
( map
),它有一个OpenLayers.Layer.Vector
( map.addLayer(vectorLayer)
),我使用vectorLayer.addFeatures
将一系列OpenLayers.Feature.Vector
对象添加到vectorLayer
.
过程有点像这样:
var map, vectorLayer;
function initialize()
{
map = new OpenLayers.Map(/*...*/);
vectorLayer = new OpenLayers.Layer.Vector(/*...*/);
map.addLayer(vectorLayer);
}
function populate()
{
arrayOfStuff.foreach(function(thing, i) // data from an AJAX call
{
var feature = new OpenLayers.Feature.Vector(/*...based on thing*/));
feature.vector_type = 'marker';
vectorLayer.addFeature(feature);
}
}
然后,当我map.setCenter
用来移动地图时,矢量会错位:有些随地图移动,有些则没有,有些则两者都移动(导致重复),依此类推。手动平移地图甚至可以立即修复这些错位的矢量。不幸的是,简单地调用map.pan
不会(始终)具有相同的效果,而且vectorLayer.refresh()
似乎根本没有任何效果。
为什么会发生这种情况,我该如何让它停止?如果做不到这一点,我该怎么做才能强制地图自行修复(就像我移动地图时所做的那样)。