Hab folgendes Problem. Ich baue grade eine Karte zusammen. Es gelint mir viele Marker zu setzen. Dies sind aber alles die roten Standard-Marker.
Kann ich ohne eigene Dateien zu benutzen die Standartmarker auch grün machen.
Folgende Sources:
var map;
var layer_mapnik;
var layer_tah;
var layer_markers;
function drawmap() {
// Popup und Popuptext mit evtl. Grafik
OpenLayers.Lang.setCode('de');
// Position und Zoomstufe der Karte
var lon = 13.415153;
var lat = 52.517047;
var zoom = 12;
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.PanZoomBar()],
maxExtent:
new OpenLayers.Bounds(-20037508.34,-20037508.34,
20037508.34, 20037508.34),
numZoomLevels: 20,
maxResolution: 156543,
units: 'meters'
});
layer_mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
layer_markers = new OpenLayers.Layer.Markers("Address", { projection: new OpenLayers.Projection("EPSG:4326"),
visibility: true, displayInLayerSwitcher: false });
map.addLayers([layer_mapnik, layer_markers]);
jumpTo(lon, lat, zoom);
var pois = new OpenLayers.Layer.Text( "My Points", { location:"pois1.txt", projection: new OpenLayers.Projection("EPSG:4326")} );
map.addLayer(pois);
}
die Markers kommen von dann aus der .txt wie folgt:
lat lon title description icon iconSize iconOffset
52.517047 13.415153 1. Adresse
52.511743 13.44421 2. Adresse
52.539927 13.406482 3. Adresse
Die kommen auch alle, aber eben nur mit roten markern. Ich würde aber gern eien andersfarbig machen, jedoch ohne eigene Grafiken machen zu müssen.
Die Marker sind kleine Graphiken, die der Webbrowser aus dem Netz lädt.
Der Browser kann die Graphiken vergrößern und verkleinern, aber nicht umfärben.
Die Marker, die Du verwenden willst, müssen irgendwo im Netz verfügbar sein.
Am besten auf Deinem Server, weil Bandbreitenklau nicht gerne gesehen wird.
Du kannst zum Beispiel einen dieser Marker herunterladen und auf Deinen Server packen:
Als nächstes registrierst Du Deinen Marker als neuen Defaultmarker, und zwar mit folgendem JS-Code:
OpenLayers.Marker.defaultIcon=function(){
return new OpenLayers.Icon(
'marker_yellow.png', //************** URL des eigenen Markers hier hinterlegen!!! *********
OpenLayers.Size(21,25),
OpenLayers.Pixel(-10,-25));
};
Achtung! Bitte die Adresse des eigenen Markers eintragen, genau so, wie wenn Du ihn in einem angeben würdest!
Falls Du mehrere Marker in verschiedenen Farben haben willst, musst Du in deiner .txt-Datei auch die restlichen Felder ausfüllen, die Du in der ersten Zeile versprichst.
Bei iconSize kommt die Grösse des Markers rein im Format breite,höhe
Bei iconOffset kommt rein, um wie viele Pixel der Marker verschoben ist, z.B. weil Dein Bild eine schrägstehende Nadel ist. Auch im Format links,oben ich weiss aber nicht mehr, von welcher Ecke aus gerechnet wird…
Bei (0,0) liegt der “Hotspot” in der linken oberen Ecke.
Die erste Zahl gibt die horizontale Verschiebung des Markers an (üblicherweise nach links: negativ), die zweite die vertikale (üblicherweise nach oben: negativ).
Der Defaultmarker ist eine zentrierte Nadel, da ist der erste Wert die negative halbe Breite zur Zentrierung, und der zweite die negative Höhe. Dann ist der Hotspot unten in der Mitte.
Ganz einfach sind zentrierte Marker: da lässt man den Parameter einfach weg.