2011-07-27 5 views
2

2秒ごとにKMLファイルをリロードするコードを削除しました。各更新時に、カメラのレイヤーの機能の範囲をパンしたいのですが、コールバックを設定する場所を特定できません。要求が完了する前にmap.panTo(trackLayer.getDataExtent().getCenterLonLat());と呼ばれている:OpenLayers httpリフレッシュコールバック関数

//set up ajax  
var protocol = new OpenLayers.Protocol.HTTP({ 
    url: "feed.kml", 
    format: new OpenLayers.Format.KML(), 
    callback: function(){ 
     alert("here"); //never called 
    } 
}); 

//create refresher 
var refresh = new OpenLayers.Strategy.Refresh({force: true, active: true}); 

//create layer for kml 
var trackLayer = new OpenLayers.Layer.Vector("KML", { 
    strategies: [new OpenLayers.Strategy.Fixed(), refresh], 
    protocol: protocol, 
}); 

//add to map 
map.addLayer(trackLayer); 

//refresh the kml every 2 seconds 
setInterval(function(){ 
    refresh.refresh();  
    //pan to extent 
    map.panTo(trackLayer.getDataExtent().getCenterLonLat()); 
},2000); 

問題は、この行があることです。

ここでのドキュメントです:私はそれを得た

答えて

2

NVMは。私はこれをより速く把握していないために馬鹿だと感じる。

//zoom callback 
trackLayer.events.register("featuresadded",trackLayer,function(){ 
    var bounds = trackLayer.getDataExtent(); 
    if(bounds){ map.panTo(bounds.getCenterLonLat()); } 
});