Leaflet Marker eigene Icons anhand json Ausgabe

Meteorologe

Ensign
Registriert
Aug. 2006
Beiträge
253
Hallo,
ich habe eine Leaflet Map erstellt, die anstatt des typischen Marker, ein eigenes Icon anzeigt. So weit, so erfreulich, dass dies funktioniert.

Code:
$x = parse_coordinate($jshomepage->x);
$y = parse_coordinate($jshomepage->y);
echo "var marker = L.marker([$y, $x], {icon: Bild1}).addTo(map);";

Mein Problem, bei dem ich leider nicht weiter komme und um eure Unterstützung bitte, ist, dass gerne anhand einer json URL Ausgabe, ein entsprechendes Icon angezeigt werden soll. Aktuell ist es so, dass nur Bild1 angezeigt wird. Logisch, da ich als icon: Bild1 verwende

Die json Ausgabe, auf die ich mich gerne berufen möchte, enthält „product“ und danach eine Zahl.
Beispiel: "product" : "1"
Nun hätte ich gerne, wenn bei „product“ eine 1 ausgegeben wird, das von mir definierte icon „Bild1“ angezeigt wird.
Wenn "product" : "2" ausgegeben wird, dann „Bild2“ usw…

Folgendes habe ich in meine Datei zur Definition der Bilder hinterlegt:

Code:
var Bild1 = L.icon({
    iconUrl: 'http://xyz.de/IMG_0750.jpeg',


    iconSize:     [20, 20], // size of the icon


});

var Bild2 = L.icon({
    iconUrl: 'http://xyz.de/IMG_0760.jpeg',


    iconSize:     [20, 20], // size of the icon


});

var Bild3 = L.icon({
    iconUrl: 'http://xyz.de/IMG_0770.jpeg',


    iconSize:     [20, 20], // size of the icon


});

Leider habe ich noch nicht heraus gefunden, wie ich bei leaflef anhand einer bestimmten json Ausgabe, jeweils ein anderes Icon verwenden kann.
 
Zuletzt bearbeitet:
An L.icon übergibst du ein Object. Wenn du das vorher definierst kannst du es so lösen:

Javascript:
var conf = {
    iconUrl: false,
    iconSize: [20, 20]
}
switch(deinJSON.product)
{
    case 1:
        conf.iconUrl = 'http://xyz.de/IMG_0750.jpeg';
        break;
    case 2:
        conf.iconUrl = 'http://xyz.de/IMG_0760.jpeg';
}
var Bild = L.icon(conf);
 
Danke für die Hilfe. Sieht logisch und sehr gut aus.
Nur leider wird bei mir entweder gar kein Icon mehr angezeigt, oder nur noch das blaue Standard Icon ohne eigenem Bild.

Muss
Code:
echo "var marker = L.marker([$y, $x], {icon: Bild}).addTo(map);";
noch bearbeitet werden?
 

Ähnliche Themen

M
Antworten
5
Aufrufe
2.572
Antworten
5
Aufrufe
2.861
Zurück
Oben