0

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()まったく効果がないようです。

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

4

1 に答える 1