branch: externals/osm commit d27892f63a5356ba1a406de0b26af1185e096131 Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
Add some utility functions --- osm.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/osm.el b/osm.el index 3da392f61d..413b080246 100644 --- a/osm.el +++ b/osm.el @@ -219,14 +219,22 @@ We need two distinct images which are not `eq' for the display properties.") (setq lat (* lat (/ float-pi 180.0))) (- 0.5 (/ (log (+ (tan lat) (/ 1 (cos lat)))) float-pi 2))) +(defun osm--x-to-lon (x zoom) + "Return longitude in degrees for X/ZOOM." + (- (/ (* x 360.0) 256.0 (expt 2.0 zoom)) 180.0)) + +(defun osm--y-to-lat (y zoom) + "Return latitude in degrees for Y/ZOOM." + (setq y (* float-pi (- 1 (* 2 (/ y 256.0 (expt 2.0 zoom)))))) + (/ (* 180 (atan (/ (- (exp y) (exp (- y))) 2))) float-pi)) + (defun osm--lon () "Return longitude in degrees." - (- (/ (* osm--x 360.0) 256.0 (expt 2.0 osm--zoom)) 180.0)) + (osm--x-to-lon osm--x osm--zoom)) (defun osm--lat () "Return latitude in degrees." - (let ((y (* float-pi (- 1 (* 2 (/ osm--y 256.0 (expt 2.0 osm--zoom))))))) - (/ (* 180 (atan (/ (- (exp y) (exp (- y))) 2))) float-pi))) + (osm--y-to-lat osm--y osm--zoom)) (defun osm--lon-to-x (lon zoom) "Convert LON/ZOOM to x coordinate in pixel."