簡體   English   中英

自動重新加載OpenLayers.Layer.Text標記的數據

[英]Reload data for OpenLayers.Layer.Text marker automatically

我目前正在嘗試使用OpenLayers在OSM地圖上分層一些標記。 該頁面應以一定的間隔刷新,並從數據庫加載新數據。

我通過本地servlet從數據庫將數據提供給OpenLayers.Layer.Text,該servlet從數據庫中的記錄構造輸入文件。

我當前的方法是使用<meta http-equiv="refresh" content="3">進行簡單化,這將重新加載頁面並隨后重新加載腳本。 這種方法的問題是OSM映射被重置,即縮放,查看端口等。

因此,我嘗試使用OpenLayers的刷新策略,但這似乎並未從servlet的相應層重新加載數據。

<!DOCTYPE html>
<html>
    <head>
        <title>OSM View/title>
        <meta charset="utf-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <!--meta http-equiv="refresh" content="3"-->
    </head>
    <body>
        <div id="mapdiv" style="height:750px"></div>
        <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
        <script>
            var lat = 52;
            var lon = 10;
            var zoom = 18;

            map = new OpenLayers.Map("mapdiv", {
                controls: [
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.LayerSwitcher()
                ],
                projection: 'EPSG:900913',
                displayProjection: 'EPSG:4326',
                numZoomLevels: 18,
                units: 'm'
            });

            mapnik = new OpenLayers.Layer.OSM("Karte");
            map.addLayer(mapnik);

            var marker = new OpenLayers.Layer.Text("marker", {
                location: "http://localhost:8080/marker",
                projection: map.displayProjection,
                strategies: [new OpenLayers.Strategy.Refresh({interval: 3000, force: true})]
            });
            map.addLayer(marker);

            var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984
            var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
            var position = new OpenLayers.LonLat(lon, lat).transform(fromProjection, toProjection);

            map.setCenter(position, zoom);
        </script>
    </body>
</html>

有沒有辦法實現我想做的事情?

OpenLayers.Layer.Text不支持策略。

查看代碼,沒有任何功能可以重新加載數據,但是您應該能夠使用以下方法重新加載圖層數據:

setInterval(function() {
    layer.clearFeatures();
    layer.loaded = false;
    layer.loadText();
}, 3 * 1000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM