The map data is © OpenStreetMap contributors, licensed under the ODbL The map
rendering is © OpenTopoMap, licensed under the CC-BY-SA.
- Zoomable and moveable map display
- Display of tracks and POIs from GPX file
- Parallel fetching of tiles with curl
- Moving in large and small steps
- Mouse support (dragging, clicking, menu)
- Map scale indicator
- Go to coordinate
- Search for location by name
- Org and Elisp link support
- Bookmarked positions with pins
- Multiple preconfigured tile servers
The package is available on GNU ELPA and can be installed with package-install
.
Note that osm.el requires Emacs 27 and depends on the external curl
program.
Emacs must be built with libxml, libjansson, librsvg, libjpeg and libpng
support. The following is an example configuration which relies on use-package
.
Please take a look at the wiki for additional configuration.
(use-package osm
:bind (("C-c m h" . osm-home)
("C-c m s" . osm-search)
("C-c m v" . osm-server)
("C-c m t" . osm-goto)
("C-c m x" . osm-gpx-show)
("C-c m j" . osm-bookmark-jump))
:custom
;; Take a look at the customization group `osm' for more options.
(osm-server 'default) ;; Configure the tile server
(osm-copyright t) ;; Display the copyright information
:init
;; Load Org link support
(with-eval-after-load 'org
(require 'osm-ol)))
To store a bookmark press the key b
, to store Org/Elisp links press the keys l
or e
respectively. You can also use a custom binding, e.g., C-c l
. Then the link
can be inserted into an Org buffer with C-c C-l
. Bookmarks and Org links can be
created at point with the mouse, see osm-bookmark-set-click
and
osm-org-link-click
.
Click on a link or press RET
to jump to the location. These links work in Org
buffers in Emacs. Furthermore you can open Org links in arbitary buffers with
org-open-at-point-global
. I recommend binding this command to a key, e.g, C-c o
.
- Italia, 41.87° 12.46° OpenTopoMap
- London, England, 51.49° -0.14°
- København, Danmark, 55.69° 12.57° CyclOSM
- New York, United States, 40.73° -73.98° Stamen Watercolor
- Mount Everest, 27.96° 86.89° OpenTopoMap
Place the point behind the closing parenthesis and press C-x C-e
to jump to the
location. The Elisp links can be used in arbitary text files. Since they are
Elisp s-expressions they can be easily manipulated programatically.
(osm 41.869561 12.458496 6 opentopomap "Lazio, Italia")
(osm 51.489507 -0.144196 11 "London, Greater London, England, SW1A 2DX, United Kingdom")
(osm 55.686875 12.569733 12 cyclosm "København, Københavns Kommune, Region Hovedstaden, 1357, Danmark")
(osm 40.729568 -73.979187 12 stamen-watercolor "New York County, New York, United States")
(osm 27.961656 86.892242 13 opentopomap "Khumjung, Khumbupasanglahmu, सोलुखुम्बु, Province #1, Nepal")
Top-level commands:
osm-home
: Open new map at home coordinatesosm-search
: Search and jump to locationosm-goto
: Go to coordinatesosm-server
: Select serverosm-bookmark-jump
: Jump to bookmarkosm-gpx-show
: Show GPX file in map viewer
Key bindings in osm-mode
buffer:
<arrow>
: Small step scrollingC-<arrow>
,M-<arrow>
: Large step scrolling+
,SPC
:osm-zoom-in
- Zoom in-
,S-SPC
:osm-zoom-out
- Zoom out<mouse-1>
:osm-center-click
- Center to point<mouse-2>
:osm-org-link-click
- Store point as Org link<mouse-3>
:osm-bookmark-set-click
- Store point as bookmark<osm-bookmark mouse-*>
:osm-bookmark-delete-click
- Click on bookmark at point to delete<down-mouse-*>
:osm-mouse-drag
- Drag the map with the moused
,DEL
:osm-bookmark-delete
- Delete selected bookmarkn
:osm-bookmark-rename
- Rename selected bookmarkt
:osm-goto
- Go to locationh
:osm-home
- Go to home locations
:osm-search
- Search for locationv
:osm-server
- Select tile serverx
:osm-gpx-show
- Show tracks and POIs from GPX fileX
:osm-gpx-hide
- Hide overlays from GPX filel
:org-store-link
- Store org linke
:osm-elisp-link
- Store Elisp link in the kill ringb
:osm-bookmark-set
- Set bookmarkj
:osm-bookmark-jump
- Jump to bookmarkq
:quit-window
- Close buffer and windowc
:clone-buffer
- Clone buffer
There have been other attempts at map viewers in Emacs before.
- https://github.com/ruediger/osm-mode
- https://github.com/svenssonjoel/Emacs-OSM
- https://github.com/jd/google-maps.el
- https://github.com/emacsattic/org-osm-link
Since this package is part of GNU ELPA contributions require a copyright assignment to the FSF.