2016-05-26 17 views
0

Ich habe ein Bild Karte und eine Datei enthalten Listen von Koordinaten:jQuery: dynamische Bildmarkierungen auf Basis von Koordinaten von Datendatei

var coord_data = { 
    "100 100": "2010-_MG_0419.jpg" 
    "110 110": "2010-_MG_0412.jpg"}; 

ich eine Markierung auf jedem dieser Koordinaten auf dem Bild Karte setzen will.

Inspiration von @RDeving bekommen, habe ich eine Version, die irgendwie funktioniert:

Fiddle Link

Aber wenn ich ändern:

   $('<span class="marker"/>').css({ 
       "top": 100, 
       "left": 200 
      }).appendTo(target); 

An:

   $('<span class="marker"/>').css({ 
       "top": coords[0], 
       "left": coords[1] 
      }).appendTo(target); 

Das CSS funktioniert nicht für die Position des Markers.

Ich habe eine Weile gesucht und vergeblich.

Irgendwelche Ideen, warum es so verhält?

Antwort

0

, wenn Sie das Bild in einem "img" DOM-Element haben könnten Sie einfach ...

// Have some css 
img#myimage { 
    position: relative; 
} 
label.icon { 
    position: absolute; 
} 


//Append them dynamically 
const $imgTag = $("img#myimage"); 

coord_data.forEach(data => { 
    const coords = data.split(" "); 
    $imgTag.append($("<label>").addClass("icon").css({ 
    'top': coords[0], 
    'left': coords[1] 
    })); 
}); 
+0

Vielen Dank für Ihren Kommentar. Ich bin ein wenig neu in jQuery, aber mein Browser sagte "Coord_Data.forEach" ist keine Funktion ... –

+0

vielleicht sollten Sie eine for ... Schleife verwenden, um das gleiche Ergebnis zu erreichen – PRDeving

+0

Ich machte den Code kein Fehler, aber immer noch ein wenig verwirrt über die Logik. Muss ich etwas zum HTML hinzufügen? sonst wie man das SVG-Symbol in die Webseite einbinden? –

0

OK, habe ich die Lösung. Wenn der Wert ein "String" -Typ ist, muss ich auch "px" hinzufügen. Aber wenn der Wert ein "Integer" -Typ ist, wird kein "px" benötigt.

dies würde So arbeiten:

$('<span class="marker"/>').css({ 
    "top": coords[0]+"px", 
    "left": coords[1]+"px" 
    }).appendTo(target); 

Oder

"top": parseInt(coords[0]),