Folgende Funktion hinzufügen (zum Beispiel ans Ende der OSM-Karte-Funktionen.js):
/*
*
* Creates a new marker icon
*
* using the icons-array (defined in the html-file)
*
* index
* 0 address to the image
* 1 width of the image
* 2 height
* 3 factor by which the image should be offset horizontally
* 4 factor by which the image should be offset vertically
*
* please see the icon array itself for examples of values
*/
function makeIcon(iconId) {
var size = new OpenLayers.Size(icons[iconId][1],icons[iconId][2]);
var offset = new OpenLayers.Pixel(-(size.w*icons[iconId][3]), -(size.h*icons[iconId][4]));
var icon = new OpenLayers.Icon(icons[iconId][0],size,offset);
return icon;
}
Dann in die addMaker-Funktion unter:
feature.data.overflow = "auto";
Folgendes hinzufügen:
feature.data.icon = makeIcon(iconId);
Dann musst du noch das Array mit den Icons erstellen, zum Beispiel (in eine JS-Datei außerhalb einer Funktion):
icons = new Array();
icons[0] = new Array('http://openlayers.org/api/img/marker.png','21','25','0.5','1');
icons[1] = new Array('http://openlayers.org/api/img/marker-gold.png','21','25','0.5','1');
icons[2] = new Array('http://openlayers.org/api/img/marker-blue.png','21','25','0.5','1');
icons[3] = new Array('http://openlayers.org/api/img/marker-green.png','21','25','0.5','1');
icons[4] = new Array('pin_red.png','16','28','0','1');
icons[5] = new Array('pin_blue.png','16','28','0','1');
icons[6] = new Array('pin_green.png','16','28','0','1');
Die Zahl vorne (hier 0-6) muss dann in der addMarker-Funktion angegeben werden, dazu muss folgende Zeile noch geändert werden:
function addMarker(layer, lon, lat, popupContentHTML, showPopupOnLoad, iconId) {
Folgendes würde dann einen grünen Pin anzeigen (wenn die entsprechende Grafik im gleichen Verzeichnis liegt):
addMarker(layer_markers, 11.3363, 49.5952, "<b>Rathaus Simmelsdorf</b> <br>Nürnberger Str. 16 <br>91245 Simmelsdorf <br>+49-9155-78-0 <img src=\"../osm/Simmelsdorf-Rathaus.jpg\" width=\"100\" height=\"50\">", 6);
Ergänze in der addMarker-Funktion (OSM-Karte-Funktionen.js):
var markerClick = function(evt) {
if (this.popup == null) {
this.popup = this.createPopup(this.closeBox);
map.addPopup(this.popup);
this.popup.show();
} else {
this.popup.toggle();
}
// Ab hier ergänzen
if (elementsToShowOnClick != null) {
for (var i=0;i<elementsToShowOnClick.length;++i) {
if (this.popup.visible()) {
elementsToShowOnClick[i].setVisibility(true);
} else {
elementsToShowOnClick[i].setVisibility(false);
}
}
}
// Bis hier
OpenLayers.Event.stop(evt);
};
Außerdem diese Zeile ändern:
function addMarker(layer, lon, lat, popupContentHTML, iconId, elementsToShowOnClick) {
Dann musst du diejenigen Marker bei denen das möglich sein soll, mit der addMarker Funktion hinzufügen (nur als Beispiel):
var lGrenzeGpx = new OpenLayers.Layer.GPX("Grenze", "Simmelsdorf Grenze.gpx", "#00FF00");
lGrenzeGpx.setVisibility(false);
...
addMarker(layer_markers, 11.3363, 49.5952, "<b>Rathaus Simmelsdorf</b> <br>Nürnberger Str. 16 <br>91245 Simmelsdorf <br>+49-9155-78-0 <img src=\"../osm/Simmelsdorf-Rathaus.jpg\" width=\"100\" height=\"50\">", 1, [ lGrenzeGpx ]);