Hallo
Nach ewigen rumprobieren und testen habe ich nun eine Lösung, welche auch funktioniert.
Der Tipp mit den Zoom war definitiv falsch. Die lösung habe ich in einem alten Thread von 2007 gefunden
als erstes habe ich die (in meinem Fall 2) Icon global definiert
var marker_klein = 'map2_point4.gif';
var marker_gross = 'map2_point4.png';
var size_1 = new OpenLayers.Size(10, 10);
var size_2 = new OpenLayers.Size(22, 22);
var marker_1 = new OpenLayers.Icon(marker_klein, size_1);
var marker_2 = new OpenLayers.Icon(marker_gross, size_2);
in der Funktion init() der RSS-Teil
georss2 = new OpenLayers.Layer.GeoRSS( 'GeoRSS dynamisch',
'map2_big.xml',
{
'projection' : proj4326,
'internalProjection' : proj4326,
'externalProjection' : proj4326,
'visibility' : true,
'icon' : marker_1
}
);
........
map.events.register('zoomend', map, handleZoom);
als nächstes unter zoomend die neue Funktion
function handleZoom(event) {
var akt_zoom = map.getZoom();
if (akt_zoom <= 9) {
if ( marker_aktuell != marker_klein ) {
marker_aktuell = marker_klein;
setOverlayIcons(marker_klein, size_1);
}
} else {
if ( marker_aktuell != marker_gross ) {
marker_aktuell = marker_gross;
setOverlayIcons(marker_gross, size_2);
}
}
}
In der wird überprüft, welche Zoom-Stufe gewählt ist und dann entsprechend die eigendliche Funktion zum wechseln des Icon aufgerufen.
function setOverlayIcons(grafik, size)
{
var rss_data = georss2.features;
var anzahl = rss_data.length;
for (var i = 0; i < anzahl; i++) {
var feature = rss_data[i];
var newdata = feature.data;
// Unbedingt einen neuen Icon erstellen, da der vom
// vorigen Schleifendurchlauf sonst verschwindet!!
var icon = new OpenLayers.Icon(grafik, size);
newdata.icon = icon;
var newfeature = new OpenLayers.Feature(georss2, feature.lonlat, newdata);
georss2.features[i] = newfeature;
var marker = newfeature.createMarker();
marker.events.register('click', newfeature, georss2.markerClick);
georss2.removeMarker(feature.marker);
georss2.addMarker(marker);
}
}
In der Schleife werden alle Icons eines Layers aufgerufen und der Reihe nach mit dem neuen Bild versehen. Danach wird das alte OnClick im neuen Incon registriert und der “alte” Icon vom Layer entfernt. Dann wird der “neue” hinzugefügt.
Das wars dann auch schon 