Openlayers Datenbankanbindung

hm ich glaub eigentlich nicht, wenn ich mich recht erinner brauch ich den nur fürs wfs-t, habs jetzt ausgeschalten. somit kommt auch der fehler nicht mehr zugriff verweigert, aber dafür zeigt mir der firebug jetzt gar keinen fehler mehr an :smiley:

weiß leider nicht wie man hier ein img einbinden kann sonst würd ich einen screen von meiner map.html hochladen. bei mir schauts eigentlich gleich aus, außer dem rosa ist halt die steiermark in blau dargestellt.

Dann ist das wahrscheinlich ein Projektionsproblem. Vermutlich liegt der Marker am Nullpunkt bei Afrika? Dann ist das auch nicht nur einer, sondern alle übereinander :wink:

sphericalMercator und singleTile sind keine Optionen für den Vector Layer, kannst Du entfernen.

Versuchs mal mit der Option (siehe Reprojecting Vector Data):


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

also (nicht getestet):


 var pois = new OpenLayers.Layer.Vector("POIs", {
                    projection: new OpenLayers.Projection("EPSG:4326"),
					isBaseLayer: false,
					opacity:0.8,
                    strategies: [new OpenLayers.Strategy.BBOX({resFactor: 1.1})],
                    protocol: new OpenLayers.Protocol.HTTP({
                    url: "allebetriebe.php",
                        format: new OpenLayers.Format.Text()
                    })
                });

Gruß,
Norbert

Prima, jetzt kommen wir langsam zu den einfachen Sachen. Der schwarze Schirm ist nix schlimmes. - das mach ol immer, wenn was im Script faul ist. Ist ganz normal.
neben firebug gibt es im ff auch noch die Fehlerkonsole. shift-strg-J. schneller und einfacher als firebug, nur nicht so mächtig.

anwendung: konsole aufmachen, alles löschen, reload vom map.html, konsole aufmachen. da steht dann drin, wo es geknallt hat.

ikonor ist ja schon dran - ich bin erstmal froh, dass die Sache mit dem Netzwerk weg ist. Das war wirklich misteriös (und interessant)

dann schau dir meinen Betrag an. da steht der Provider drin pic-upload.de, anmelden, bild hochladen, foren-url guttenbergen. das wars.

gruss
walter

ach ja, wenn du den proxy nicht brauchst, sollte auch die ol-zeile mit dem dev raus. die war nur dafür.

vielen dank das hat funktioniert :slight_smile: die marker werden jetzt an der richtigen stelle angezeigt, aber leider öffnen sich die pop ups noch nicht

http://imageshack.us/photo/my-images/155/mapem.png/

die fehlerkonsole zeigt mir folgende fehler an, aber kein fehler davon spricht auf mein map.html oder mein php file an

http://imageshack.us/photo/my-images/849/fehler1.png/

http://imageshack.us/photo/my-images/829/fehler2i.png/

Das sind Warnungen zum OpenLayers css, die kommen immer.

Wenn ich das bei mir nachvollziehe, erhalte ich beim Klicken eines Markers schon einen Fehler “Fehler: TypeError: map.addPopup is not a function”.

Das liegt daran, das die Variable “map” innerhalb von init definiert ist und damit in onFeatureSelect später nicht mehr referenziert werden kann. Ist map außerhalb von init global definiert, funktioniert’s.

vielen vielen dank, jetzt hats funktioniert, es sind doch immer wieder die kleinen fehler ^^ eine frage hätte ich noch, wenn ich jetzt noch einen layer mit pop ups hinzufügen möchte, muss ich hier

selectControl = new OpenLayers.Control.SelectFeature(pois);

noch zum schluss noch den neuen einfügen oder is dann noch etwas zu beachten oder funktioniert dieses variante überhaupt nicht?

wie bist du auf den fehler gekommen durch die fehlerkonsole von ff?

Wo er den Fehler gesehen hat, weiss ich nicht genau. ICH sehe sowas in der Fehlerkonsole (strg shift J) Genau dafür ist sie da, wenn man nicht stärkere Geschütze auffahren will. Drück auch mal auf strg shift I oder strg shift K . Und dann gibt es noch noch den “Java Script Debugger”. Den musste aber extra installieren.

Gruss
walter

Schön, dass es geklappt hat.

Dem SelectFeature Konstruktor kann man auch ein Array von Layern übergeben. Die Event Listener übergibt man dann besser auch als Option, anstatt diese am Layer zu registrieren.

Also statt


selectControl = new OpenLayers.Control.SelectFeature(pois);
pois.events.on({
    'featureselected': onFeatureSelect,
    'featureunselected': onFeatureUnselect
});  

das einbauen (nicht getestet):


var options = {
    onSelect : onFeatureSelect,
    onUnselect : onFeatureUnselect
};
selectControl = new OpenLayers.Control.SelectFeature([pois, layer2], options);

Ja, ist aus der Firefox Fehlerkonsole. Ist mir erst aufgefallen, als ich die Konsole nach dem Laden der Seite geleert und dann auf einen Marker geklickt habe.

ok werde ich mal probieren, aber muss ich hier

nicht options.events.on schreiben?

ok hab mittlerweile herausgefunden das ich es so schreiben sollte

new OpenLayers.Control.SelectFeature([pois, offen]);

ohne dem options aber jetzt stellt sich mir die frage wie ich das an den handler weitergeben

habs mitterlweile gelöst :slight_smile: meine lösung schaut jetzt wie folgt aus:

function onPopupClose(evt) {
    selectControl.unselect(selectedFeature);
}
function onFeatureSelect(feature) {
    selectedFeature = feature;
    var tags = feature.attributes;
    var infoHtml = "<table>";
    for (var key in tags) {
       infoHtml += "<tr><td>" + tags[key] + "</td></tr>";
    }
    infoHtml += "</table>";
    popup = new OpenLayers.Popup.FramedCloud("chicken", 
                             feature.geometry.getBounds().getCenterLonLat(),
                             null,
                             infoHtml,
                             null, true, onPopupClose);
    feature.popup = popup;
    map.addPopup(popup);
}
function onFeatureUnselect(feature) {
    map.removePopup(feature.popup);
    feature.popup.destroy();
    feature.popup = null;
}
var options = { hover: false, onSelect: onFeatureSelect, onUnselect: onFeatureUnselect };
selectControl = new OpenLayers.Control.SelectFeature([pois,offen], options);
map.addControl(selectControl);

ich danke euch für die hilfe!