On Tue, Jun 01, 2010 at 07:21:49PM +0200, Florian Lohoff wrote: > On Tue, Jun 01, 2010 at 04:37:25PM +0200, Sarah Hoffmann wrote: > > Die Projektion sollte eigentlich die des Layers sein. Sprich, einfach > > noch die Option > > projection : new OpenLayers.Projection("EPSG:4326") > > beim erstellen des Vector-Layers hinzufügen. Dann sollte es gehen. > > Allerdings > > ist es am klügsten, wenn du den Vektor-Layer in der gleichen Projektion > > hast, > > wie die Daten im GeoJOSN, sonst wird beim Laden jedes Feature einzeln > > umprojeziert. > > Eben - d.h. entweder ich nutze die BBOX in 900913 und lasse PostGIS die bbox > erst > in EPSG:4326 umprojezieren und das ergebniss des statements wieder > zu EPGS:900913. Oder ich mache den vector layer komplett in 4326 und lasse > das Javascript umprojezieren -> Viel CPU auf dem Client.
Ich bin verwirrt. Warum überhaupt 900913 verwenden, wenn deine Datenbank im 4326 ist? Display-Projection deiner Karte ist auch 4326. Wenn also deine Datenbank in 4326 ist, die BBOX-Anfrage in 4326 ankommt, du die Daten im GeoJOSN in 4326 auslieferst und dein Vektor-Layer in 4326 ist, dann ist keine Umrechnung nötig, weder im Server noch im Client. > > Für das Problem mit dem Zoom habe ich allerdings auch keine befriedigende > > Lösung gefunden, sondern die moveEnd()-Funktion gehackt: > > > > moveEnd: function(obj) { > > if (this.curzoom < this.map.zoom) { > > this.refresh({force : true}); > > } > > this.curzoom = this.map.zoom; > > } > > > > Damit wird das Neuladen erzwungen, wenn hereingezoomt wird. (Welche Features > > geladen werden, wird durch die Grösse des Gebiets bestimmt, i.e. bei der > > Ich habe ja nicht das problem das ich neu laden muss sondern das ich den zoom > level an das cgi mitliefern will. Ich mache z.b. auch teilweise vom zoomlevel > abhaengig was ich darstelle. In der maxspeed map sieht man ab zoom 16 oder 17 > dann kleine Schilder auf den Straßen. Das sollte funktionieren, wenn du zusätzlich den entsprechenden Parameter im Protocol-Objekt änderst. > > Datenbankabfrage gibt es ein 'limit 200'. Daher brauche ich das nicht in > > der URL.) Wenn du da eine bessere Lösung findest, bin ich ganz Ohr. > > Aeh - das finde ich doof - Weil dann wie bei keepright oder openstreetbugs > einfach nur mal 200 elemente an einer random position im sichtbereich > auftauchen. > Koennte den betrachter dazu verleiten zu glauben das das alles ist. > > Deshalb werfe ich den zoom mit in das CGI script im Ajax request und im CGI > script sage ich dann > > if ($zoom < 14) { > return {} > } > > Dann ist nichts sichtbar ... Schoen waere noch einen status mitzuliefern der > dargestellt wird, nach dem motto "Please zoom to show elements" - Aber das ist > wieder nicht so schoen mit GeoJSON zu machen ... > > Ich hatte mal ueberlegt eben den response string zu zerlegen. D.h. erste > zeile ist status und dann folgt das GeoJSON so in der art. Der GeoJOSN-Standard definiert, dass man der Datei beliebige Attribute mitgeben kann. Leider wirft OpenLayers diese weg. Da muss man wohl mal eine Erweiterung bauen. Ich dachte eher daran, Server-seitig eine Gruppierungsfunktion zu bauen. OpenLayers hat soetwas ja mit der Paging-Strategy, aber leider gruppiert die nur fertige Features, was bedeutet, dass sie immernoch unter dem 200-Feature-Maximum von OpenLayers leidet. Gruss Sarah _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de