Wie kann ich die Daten von OpenLayers.Layer.GML erreichen?

Hallo,

die Daten aus map_data_web.txt sehen so aus (pro Datensatz):


lat    lon    imgdirection    filename    pano    thumbnail    datetimeoriginal    icon    iconSize    iconOffset    nation    country    town    street
49.9942724285861    8.66443542324444    339    000037.jpg    /home/me/DIY-streetview/20110123/out/jpg/000037.jpg    /home/me/DIY-streetview/20110123/out/jpg.small/000037.jpg    2011:01:23 14:11:40    green_small.png    9,9    0,0    Germany    Hessen    Langen    Teststraße
...

und werden per


var lgpx = new OpenLayers.Layer.GML(
    "Panoramen", 

    "map_data_web.txt",{

            format: OpenLayers.Format.Text,

            projection: new OpenLayers.Projection("EPSG:4326")
    }
);


eingelesen.

Preisfrage:
Wo landen sie?

Angenommen ich möchte sie erstmal zu Testzwecken per


alert ("lgpx Daten: " + GESUCHT.toSource());

anzeigen lassen.

Genauer gesagt brauche ich
gesucht.lat
gesucht.lon
gesucht.pano
gesucht.imgdirection

um da eine Schleifen drüber laufen zu lassen um da eine schleife drüber laufen zu lassen.

Danke,
Jan

Hi, also eigentlich kommst du an die Daten in den Callback Methoden (z.B. vom Popup) über MeinAktuellesFeature.Data.imgdirection ran.

Danke,

alert(“feature.data” + feature.data.toSource());
gibt:

feature.data({imgdirection:“88”, filename:“000045.jpg”, pano:“/home/me/DIY-streetview/20110123/out/jpg/000045.jpg”, thumbnail:“/home/me/DIY-streetview/20110123/out/jpg.small/000045.jpg”, datetimeoriginal:“2011:01:23 14:13:00”, nation:“Germany”, country:“Hessen”, town:“Langen”, street:“Teststrasse”})

leider fehlen lat und lon?

Werden die irgendwie besonders behandelt?

Jan

lat und lon müsstest du über feature.geometry erreichen können, wenn ich mich nicht ganz täusche.

alert(“feature.geometry” + feature.geometry.toSource());

feature.geometry({id:“OpenLayers.Geometry.Point_136”, x:964614.52717613, y:6445338.3059475, bounds:{left:964614.52717613, bottom:6445338.3059475, right:964614.52717613, top:6445338.3059475}})

OK.
x und y sind in welchem Format?

Sie sollten diese Werte haben:
latitude=“49.9945861297528” longitude=“8.66527973166667”

Jan

Wenn ich das richtig sehe, sind die in EPSG:900913 dargestellt. Was du suchst, ist EPSG:4326. Die müsstest du also in ein LonLat stecken und über LonLat.transform umwandeln können.

Kann nicht sein.

Alt:
var x = 8.665279;
var y = 49.994586;

Neu:
// feature.geometry.x: 964614.52717613
// feature.geometry.y: 6445338.3059475

var x = feature.geometry.x;
var y = feature.geometry.y;

Funktioniert mit alten Daten, aber nicht den neuen:
var proj1=new OpenLayers.Projection(“EPSG:4326”);
var proj2=new OpenLayers.Projection(“EPSG:900913”);
new OpenLayers.Geometry.Point(x, y).transform(proj1,proj2), {angle: mapdirection}

Ist also was anderes. Nur was?

Habs gefunden:

var proj2=new OpenLayers.Projection(“EPSG:900913”);
in
var proj2=new OpenLayers.Projection(“EPSG:3857”);

ändern und es geht.

(Fast) letzte Herausforderung:

Wie krieg ich den Zeiger über die grünen Punkte?
Derzeit liegt er darunter.

Dafür müsstest du wahrscheinlich zuerst den Layer mit den grünen Punkten zur Karte hinzufügen, danach erst den Layer mit dem Zeiger. Dann sollte es gehen :wink:

Hört sich fast zu einfach an um wahr zu sein.
Klappt auch leider nicht.

Gibt es nicht sowas wie z-index?