mehrere standartmarker

Hallo.

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.

Geht das irgendwie?

Gruß

Nahmd,

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!

Viel Spaß mit dem eigenen Marker!

Gruß Wolf

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 “icon” kannst Du die URL deines Bildes eintragen, zb die von OpenLayers “http://www.openlayers.org/dev/img/marker-blue.png” oder “http://www.openlayers.org/dev/img/marker.png” oder von irgendwo sonst.

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… :wink:

Grüße, Max

Nahmd,

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. :slight_smile:

Gruß Wolf