Mehrere Marker mit Koordinaten

Hallo

Ich möchte mehrerer Marker auf der Karte anzeigen.
Mit einem funktioniert das bestens:

    
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
markers.addMarker(new OpenLayers.Marker(lonLat));

Nun möchte ich aber mehrere Marker:


markers.addMarker(new OpenLayers.Marker(48.242,10.945));
markers.addMarker(new OpenLayers.Marker(48.123,11.345));

Wir muss/kann ich Lat und Lon (48.123,11.345) eingeben?

Vielen Dank und Grüsse, Nebbiolo

Wenn ich die Doku richtig lese sollte ‘lonLat’ ein eigenständiges Objekt sein (http://dev.openlayers.org/docs/files/OpenLayers/BaseTypes/LonLat-js.html). Wie ist in Deinem funktionierenden Beispiel denn ‘lonLat’ definiert?

Danke für Deine Antwort PHersion!

Ich habe das so gesetzt:


	//----------------------------------------------------------------------
	//	Zoom und Kartenmittelpunkt setzten 
	//----------------------------------------------------------------------

    var lon = <?php echo $lon; ?>;
    var lat = <?php echo $lat; ?>;
    var zoom = <?php echo $zoom; ?>;

    var lonLat = new OpenLayers.LonLat( lon, lat ).
        transform( map.displayProjection,
	    map.getProjectionObject() );

    map.setCenter( lonLat, zoom );

Aber meine Marker sollten andere Koordinaten bekommen.
Also möchte ich wissen wie Marker mit Koordinaten (also ohne lonlat) setzten kann.

Guten Morgen
Nun haben so viele diesen Artikel gelesen … und ich habe keinen einzigen Lösungsvorschlag erhalten.
Ich habe viel versucht, aber da es sich um eine einmalige Angelegenheit handelt (bin über 70) möchte ich mich wirklich nicht mehr tiefer in dieses Thema einarbeiten.
Also bitte helft mir doch und beschreibt mir einen Marker bei dem man die Lat und Lon Koordinaten mitgeben kann …

Du musst auch die Marker-Koordinaten von EPSG:4326 nach EPSG:3857 transformieren, so wie du das beim Kartenzentrum machst:


markers.addMarker(new OpenLayers.Marker(transform([48.242,10.945], 'EPSG:4326', 'EPSG:3857')));
markers.addMarker(new OpenLayers.Marker(transform([48.123,11.345], 'EPSG:4326', 'EPSG:3857')));

Vielen, vielen Dank rainerU!!!
Ich habe die zwei mal eingebaut - leider wir nur der alte (mit lonlat) angezeigt - muss ich da sonst noch etwas ändern? Oder ist vielleicht die stelle im script (nach den Kartenzentrum falsch?)


//----------------------------------------------------------------------
// Marker setzen
//----------------------------------------------------------------------

    var markers = new OpenLayers.Layer.Markers( "Markers" );
    map.addLayer(markers);
    markers.addMarker(new OpenLayers.Marker(lonLat));
	
    markers.addMarker(new OpenLayers.Marker(transform([48.242,10.945], 'EPSG:4326', 'EPSG:3857')));
    markers.addMarker(new OpenLayers.Marker(transform([48.123,11.345], 'EPSG:4326', 'EPSG:3857')));

Moin,

statt die Koordinaten direkt anzugeben, würde ich es mal mit einem LonLat-Objekt (*) versuchen:

markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(11.345, 48.123)));

Beachte auch die Reihenfolge bei den Koordinaten - gemäß Beispiel
https://wiki.openstreetmap.org/wiki/OpenLayers_Marker_Example
würde ich auf die Reihenfolge “Länge,Breite” tippen.

Aber alle Angaben ohne Gewähr, da nur in der Theorie aus dem Beispiel gesogen.

PS:
(*) Siehe im Beispiel:

Klau dir das Beispiel hier: https://geo.dianacht.de/tests/2marker.html

 map.addLayer(markers);

 var lonLat_M1 = new OpenLayers.LonLat(11.71, 47.75).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject());
 var lonLat_M2 = new OpenLayers.LonLat(11.72, 47.74).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject());
 
 markers.addMarker(new OpenLayers.Marker(lonLat_M1));
 markers.addMarker(new OpenLayers.Marker(lonLat_M2));
 

Grüße
Max

Also, der Wert des Längengrades kommt aus der PHP-Variable $lon. Dieser wird der Java-Script-Variablen lon zugeordent. lon wird zusammen mit lat in der Funktion OpenLayers.LonLat() zu einem Koordinatenobjekt zusammengesetzt, aus dem schlussendlich der Marker erzeugt wird.

Das hier könnte funktionieren:

var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);

var lon = 10.945;
var lat = 48.242;
var lonLat = new OpenLayers.LonLat( lon, lat ).
        transform( map.displayProjection,
	    map.getProjectionObject() );
markers.addMarker(new OpenLayers.Marker(lonLat));

var lon = 11.345;
var lat = 48.123;
var lonLat = new OpenLayers.LonLat( lon, lat ).
        transform( map.displayProjection,
	    map.getProjectionObject() );
markers.addMarker(new OpenLayers.Marker(lonLat));

SUPER - es funktioniert nun auch in meiner Karte!
Ich habe die Variante von maxbe genommen, da braucht es weniger Text :wink:

Ich bedanke mir bei allen für die Hilfe!
:D:D:D

Zu früh gefreut … nun habe ich doch noch ein Problem … hoffe das allerletzte :wink:

Ich möchte vom Marker einen Link aufrufen zB. Link-Beschreibung
Ist das überhaupt möglich?

markers.addMarker(new OpenLayers.Marker(lonLat_M1),"hier wäre der Link");

Laut http://dev.openlayers.org/docs/files/OpenLayers/Marker-js.html hat ein Marker keine Eigenschaft für einen Link

ja diese Seite habe ich auch gelesen … aber irgendwo am Anfang meiner Versuche hatte ich mal ein Muster wo man einen Marker anklicken konnte …
addMarker(layer_markers, 11.641389, 48.756667, popuptext);

Ich kenne mich mit OpenLayers nicht aus, aber nach der Dokumentaion suchst Du wahrscheinlich Popups, speziell OpenLayers.Popup.Anchored, um das Popup dem Marker zuzuordnen.