我有一个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()似乎根本没有任何效果。
为什么会发生这种情况,我该如何让它停止?如果做不到这一点,我该怎么做才能强制地图自行修复(就像我移动地图时所做的那样)。