bin gerade dabei bestimmte Orte mittels Marker auf eine Karte darzustellen. Die einzelnen Marker sind anklickbar, wodurch ein Event ausgelöst wird. Durch das Auslösen wird der div-Bereich mit der ID: ‘viewer’ im Html-tag geändert und bestimmte Informationen zum Ort angezeigt. Dies alles funktioniert auch soweit wunderbar, jedoch kann ich den Marker nur einmal anklicken und beim darauf folgenden eventuellen zoomen wandert dann mein Marker zu lon/lat=0/0 .
Ich würde dies er dynamisch laden, da du so nur ca. 60 POI’s darstellen solltest.(performance)
Wenn du aber mehr haben möchtest, solltest du dir mal quältext ; ) reinziehen. Link
oder Openlayer - Dynamic text layer
<html><body onload="init()">
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script>
function destroyoutput(feature){
//document.getElementById("viewer").innerHTML = '';
}
function createoutput(feature){
//document.getElementById("viewer").innerHTML = '<a href="'+feature.attributes.title+'" target="_blank" >'+feature.attributes.description+'</a>'+'<br>'+feature.attributes.str+'<br>'+feature.attributes.plz;
}
function init(){
var lon = 10.44768;
var lat = 51.163375;
var zoom = 5;
var feature;
map = new OpenLayers.Map("map");
map.addLayer(new OpenLayers.Layer.OSM());
//Set start centrepoint and zoom
var lonLat = new OpenLayers.LonLat( lon, lat)
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
);
var pois=new OpenLayers.Layer.Vector("POI", {strategies: [new OpenLayers.Strategy.BBOX({resFactor: 1.1})],protocol: new OpenLayers.Protocol.HTTP({url: "poi.txt",format: new OpenLayers.Format.Text()})});
selcontrol=new OpenLayers.Control.SelectFeature(pois,{onSelect: createoutput,onUnselect: createoutput});
map.addControl(selcontrol);
selcontrol.activate();
map.addLayer(pois);
map.setCenter (lonLat, zoom);
}
</script>
<div id="map">map</div><!-- map -->
<div id="viewer">viewer</div><!-- viewer -->
</body></html>
So in etwa, dein Array wird dann die Textdatei:
lat lon title description icon
49.4819200 10.9830100 text Beschreibung http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png
49.477078 10.990049 text Beschriebung2 http://wiki.openstreetmap.org/w/images/e/e7/Ol_icon_blue_example.png
Wichtig ist hier die Tab-trennung und am Schluss Return
also bei mir geht es immer noch nicht? (Firefox 4)
Dein Beispiel kannte ich bis jetzt noch nicht : ), ist eig. das was ich dir gezeigt habe (OpenLayers.Layer.Vector, SelectFeature).
Nachteil ist halt hier, dass deine Pins nicht dynamisch geladen werden.
Aber wenn du nicht mehr hast, ist das völlig ausreichend : ).