Javascript 自动重新加载OpenLayers.Layer.Text标记的数据
我目前正在尝试使用OpenLayers在OSM地图上分层一些标记。页面应该在一定的时间间隔内刷新,并从数据库加载新数据 我通过一个本地servlet将数据从数据库馈送到OpenLayers.Layer.Text,该servlet根据数据库中的记录构造输入文件 我目前的方法是简单地使用Javascript 自动重新加载OpenLayers.Layer.Text标记的数据,javascript,html,openlayers,openstreetmap,Javascript,Html,Openlayers,Openstreetmap,我目前正在尝试使用OpenLayers在OSM地图上分层一些标记。页面应该在一定的时间间隔内刷新,并从数据库加载新数据 我通过一个本地servlet将数据从数据库馈送到OpenLayers.Layer.Text,该servlet根据数据库中的记录构造输入文件 我目前的方法是简单地使用,它会重新加载页面,然后重新加载脚本。这种方法的问题是,OSM映射被重置,即缩放、查看端口等 因此,我尝试使用OpenLayers的刷新策略,但这似乎并没有从servlet中为相应的层重新加载数据 <!DOCT
,它会重新加载页面,然后重新加载脚本。这种方法的问题是,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>
OSM视图/标题>
var-lat=52;
var-lon=10;
var zoom=18;
map=newOpenLayers.map(“mapdiv”{
控制:[
新建OpenLayers.Control.Navigation(),
新建OpenLayers.Control.PanZoomBar(),
新的OpenLayers.Control.LayerSwitcher()
],
预测:‘EPSG:900913’,
displayProjection:'EPSG:4326',
numZoomLevels:18,
单位:m
});
mapnik=新的OpenLayers.Layer.OSM(“Karte”);
map.addLayer(mapnik);
var marker=new OpenLayers.Layer.Text(“marker”{
地点:“http://localhost:8080/marker",
投影:map.displayProjection,
策略:[新建OpenLayers.Strategy.Refresh({interval:3000,force:true})]
});
添加图层(标记);
var fromProjection=newopenlayers.Projection(“EPSG:4326”);//从WGS 1984转换而来
var toProjection=新OpenLayers.Projection(“EPSG:900913”);//球面墨卡托投影
var位置=新OpenLayers.LonLat(lon,lat).变换(fromProjection,toProjection);
地图设置中心(位置、缩放);
有没有办法实现我的目标?OpenLayers.Layer.Text不支持策略 查看代码,没有任何函数可以重新加载数据,但您应该能够使用以下命令重新加载图层数据:
setInterval(function() {
layer.clearFeatures();
layer.loaded = false;
layer.loadText();
}, 3 * 1000);
OpenLayers.Layer.Text不支持策略 查看代码,没有任何函数可以重新加载数据,但您应该能够使用以下命令重新加载图层数据:
setInterval(function() {
layer.clearFeatures();
layer.loaded = false;
layer.loadText();
}, 3 * 1000);