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.

> 'data=maxspeed' kannst du wohl einfach an die URL anhängen. 

Okay - das geht halbwegs:

        protocol.options.params.data="maxspeed";

So kann ich da nachtraeglich das aendern.

> 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.

> 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.

Flo
-- 
Florian Lohoff                                                 f...@zz.de
"Es ist ein grobes Missverständnis und eine Fehlwahrnehmung, dem Staat
im Internet Zensur- und Überwachungsabsichten zu unterstellen."
- - Bundesminister Dr. Wolfgang Schäuble -- 10. Juli in Berlin 

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an