On 2011-07-03 16:58, Paul Hartmann wrote:
On 07/03/2011 12:35 PM, bernhard zwischenbrugger wrote:
Hallo allerseits

Ich bastle gerade am Vector styling für die khtml.maplib und möchte die
Linienbreite auch
per Meter definieren können. Dazu brauche ich jetzt eine Formel:

var faktor=meterToPixel(zoomlevel,lat);
var lineWidth=faktor*meter;

Kann mir da jemand einen Tipp geben?

liebe Grüße

Bernhard

Ich würde sagen

meterToPixel = (1 << zoomlevel) * 256 / ( 2 * PI * 6378137 * cos(lat)).

(Der Skalierungsfaktor für EPSG:3857 nach Meter (in der Realität) ist cos(lat). Ein Slippy-Map Tile ist 256 px breit. Es gibt pow(2, zoomlevel) Stück davon in einer Richtung, welche dann der Länge des Erdäquators entspricht.)

Schaut gut aus.
So habe ich das jetzt im Javascript:

var pixelPerMeter=Math.pow(2,zoom) * 256 / ( 2 * Math.PI * 6378137 * Math.cos(lat));

Da ich auch nonInteger Zoomlevel habe, ist das mit dem bitoperator nicht möglich.

Wie die Bildschirm Auflösung ist, das ist mir egal - es muss nur gleich wie die Bitmap layers sein.

lg, Bernhard




Gruß, Paul


_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de


_______________________________________________
Talk-de mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an