現在、OpenLayersを使用してOSMマップ上にいくつかのマーカーを重ねようとしています。ページは特定の間隔で更新され、DBから新しいデータをロードする必要があります。OpenLayers.Layer.Textマーカーのデータを自動的に再読み込みします。
DBのレコードから入力ファイルを構築するローカルサーブレットを使用して、DBからOpenLayers.Layer.Textにデータを供給します。
私の現在のアプローチは、<meta http-equiv="refresh" content="3">
を使用してページをリロードし、続いてスクリプトをリロードすることです。このアプローチの問題は、OSMマップがリセットされていることです。つまり、ズーム、ビューポートなどです。
OpenLayersからリフレッシュ戦略を使用しようとしましたが、これはサーブレットからデータをリロードしていないようです。対応する層。
<!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>
私は何をしようとしていますか?
はありがとうは、完璧に動作します! – padde