javascript - OpenLayers http刷新回调函数

标签 javascript openlayers

这是我的代码的精简版本,每 2 秒重新加载一个 KML 文件。在每次更新时,我想让相机平移到图层要素的范围,但我不知道在哪里设置回调。

//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);

问题在于此行:map.panTo(trackLayer.getDataExtent().getCenterLonLat()); 在请求完成之前被调用。

这是文档:

最佳答案

我明白了。我觉得自己很愚蠢,因为没有更快地解决这个问题。

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

关于javascript - OpenLayers http刷新回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846745/

相关文章:

javascript - 使用 openLayers 绘制多边形

javascript - 将 Garmin GPS 坐标获取到 JavaScript 变量中

javascript - 单击没有要素的 map 时隐藏弹出窗口

javascript - 包含来自多个模块的 CSS (Sass)

javascript - Vue - 从 REST API 实时获取数据

javascript - 在 angularjs $resource 请求期间阻止/取消阻止表单

javascript - 从服务文件调度突变

javascript - 如何在 JavaScript 中订阅 OpenLayers 5.3.0 事件?

javascript JSON 对象到 JSF back bean

javascript - AngularJS ui-router 带有可选查询参数的状态