wie Variablen-Wert ansprechen und ausgeben

02/03/2014 - 23:16 von Cornelius Lange | Report spam
hey,

wie bekommt man aus folgender Datenstruktur (gekürzt, sonst gedruckt
gute 5 absatzfreie Seite) den 7821-Wert aus properties.plaqueid?
-
({_layers:
{97:
{options:
{icon:{options:{className:"", iconUrl:"images/blueplaque.png",
iconSize:[24, 24], iconAnchor:[12, 15], popupAnchor:[0, -12]},
_initHooksCalled:true}, title:"", alt:"", clickable:true,
draggable:false, keyboard:true, zIndexOffset:0, opacity:1,
riseOnHover:false, riseOffset:250},
_latlng:{lat:53.74876948125335, lng:-0.3486764430999756},
_initHooksCalled:true,
_leaflet_events:{.},
_popupHandlersAdded:true,
_popup:{.},


feature:{type:"Feature", geometry:{type:"Point",
coordinates:[-0.3488268, 53.7486915]}, properties:{plaqueid:"7821",
plaquedesc:"<a href='./'>Volunteer</a><br><span
class='id-poi'>7821</span>", colour:"blue", imageid:"op7821.jpg"}},


defaultOptions:{},
_leaflet_id:97,
_map:{},
_icon:({}),
dragging:{_marker:{},
_initHooksCalled:true,
_enabled:true,
_draggable:{_element:({}),
_dragStartTarget:({}),
_initHooksCalled:true, _leaflet_events:{...},
_enabled:true,
_moved:true, _startPoint:{x:709, y:389}, _newPos:{x:345, y:244},
_startPos:{x:713, y:380}, _moving:false, _animRequest:184},
_leaflet_id:99}, _shadow:null, _zIndex:293, edited:false
}
},
_initHooksCalled:true}) @ http:examples/example3.js:193
-
das ist eine console.log(e.layers);-Ausgabe.



ich suche schon stundenrund, bekomme hier aber immer nur ein "undefind",
not defined, ... :


-
map.on('draw:edited', function (e) {
var layers = e.layers;
alert(options.feature.plaqueid); // hier ausgeben:
layers.eachLayer(function(layer) { }); });
-

ergibt z.B.:
alert(feature.properties.plaqueid); // Fehler: feature is not defined
alert(options.properties.plaqueid); // Fehler: options is not defined
alert(layers.properties.plaqueid); // Fehler: layers.properties is
undefined
alert(layers); // funktioniert, aber ...



könnt ihr damit etwas anfangen, reicht das an Info?


Coni
 

Lesen sie die antworten

#1 Bjoern Hoehrmann
02/03/2014 - 23:58 | Warnen spam
* Cornelius Lange wrote in de.comp.lang.javascript:
wie bekommt man aus folgender Datenstruktur (gekürzt, sonst gedruckt
gute 5 absatzfreie Seite) den 7821-Wert aus properties.plaqueid?
-
({_layers:
{97:
{options:
{icon:{options:{className:"", iconUrl:"images/blueplaque.png",
iconSize:[24, 24], iconAnchor:[12, 15], popupAnchor:[0, -12]},
_initHooksCalled:true}, title:"", alt:"", clickable:true,
draggable:false, keyboard:true, zIndexOffset:0, opacity:1,
riseOnHover:false, riseOffset:250},
_latlng:{lat:53.74876948125335, lng:-0.3486764430999756},
_initHooksCalled:true,
_leaflet_events:{.},



Solche Kürzungen sorgen dafür, dass Parser das Dokument nicht mehr ver-
arbeiten können, etwaige Lösungen sind damit schwer zu finden/testen. Es
wàre besser, statt "..." dann gar nichts zu schreiben, oder es auszu-
kommentieren.

ich suche schon stundenrund, bekomme hier aber immer nur ein "undefind",
not defined, ... :

-
map.on('draw:edited', function (e) {
var layers = e.layers;
alert(options.feature.plaqueid); // hier ausgeben:
layers.eachLayer(function(layer) { }); });
-

ergibt z.B.:
alert(feature.properties.plaqueid); // Fehler: feature is not defined
alert(options.properties.plaqueid); // Fehler: options is not defined
alert(layers.properties.plaqueid); // Fehler: layers.properties is
undefined
alert(layers); // funktioniert, aber ...



Die Daten sind hierarchisch angeordnet, Du musst mit der Wurzel anfangen
und dann jeden Schritt einzeln angeben. Wenn `layers` geht aber dann der
Zugriff auf `layers.properties` fehl schlàgt, dann wurden Schritte aus-
gelassen. Der Code fàngt ja an

({_layers:
{97:
...

Vermutlich muss `97` mit in den Pfad. Dass `layers.eachLayer` alle Layer
durchlàuft, und man daher nicht `97` angeben muss, wenn man mit `layer`
in dem Callback oben arbeitet, ist auch gut möglich. `Object.keys()` ist
hier eine Debug-Hilfe. An sich sollten Debugger es einfach machen, die
Objekthierarchie zu durchlaufen, so dass man dort alle nötigen Schritte
nachvollziehen kann.
Björn Höhrmann · mailto: · http://bjoern.hoehrmann.de
Am Badedeich 7 · Telefon: +49(0)160/4415681 · http://www.bjoernsworld.de
25899 Dagebüll · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/

Ähnliche fragen