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()
まったく効果がないようです。
なぜこれが起こっているのですか?どうすれば停止できますか? それができない場合、マップを強制的に修正するにはどうすればよいですか (マップを移動したときのように)。