Tyler.jl
A package for downloading map tiles on demand from different data source providers.
This package is currently in the initial phase of development. It needs support. Sponsorships are welcome!
Installation
In the Julia REPL type:
] add TylerThe ] character starts the Julia package manager. Hit backspace key to return to Julia prompt.
Or, explicitly use Pkg
using Pkg
Pkg.add(["Tyler.jl"])Demo: London
using Tyler, GLMakie
m = Tyler.Map(Rect2f(-0.0921, 51.5, 0.04, 0.025))
INFO
A Rect2f definition takes as input the origin, first two entries, and the width and hight, last two numbers.
Tile provider
We can use a different tile provider as well as any style theme from Makie as follows:
using GLMakie, Tyler
using Tyler.TileProviders
provider = TileProviders.OpenStreetMap(:Mapnik)
london = Rect2f(-0.0921, 51.5, 0.04, 0.025)
with_theme(theme_dark()) do
m = Tyler.Map(london; provider)
hidedecorations!(m.axis)
hidespines!(m.axis)
m
end
Providers list
More providers are available. See the following list:
providers = TileProviders.list_providers()Dict{Function, Vector{Symbol}} with 40 entries:
SafeCast => []
HikeBike => [:HikeBike, :HillShading]
AzureMaps => [:MicrosoftImagery, :MicrosoftBaseDarkGrey, :MicrosoftB…
GeoportailFrance => [:plan, :parcels, :orthos]
OpenFireMap => []
OpenSeaMap => []
Jawg => [:Streets, :Terrain, :Lagoon, :Sunny, :Dark, :Light, :M…
CyclOSM => []
USGS => [:USTopo, :USImagery, :USImageryTopo]
NASAGIBSTimeseries => [:Agricultural_Lands_Croplands_2000, :Agricultural_Land…
Thunderforest => [:OpenCycleMap, :Transport, :TransportDark, :SpinalMap,…
Esri => [:WorldStreetMap, :DeLorme, :WorldTopoMap, :WorldImager…
MapBox => []
JusticeMap => [:income, :americanIndian, :asian, :black, :hispanic, :…
OpenTopoMap => []
NLS => [:osgb63k1885, :osgb1888, :osgb10k1888, :osgb1919, :osg…
MtbMap => []
Stadia => [:AlidadeSmooth, :AlidadeSmoothDark, :OSMBright, :Outdo…
OpenStreetMap => [:Mapnik, :DE, :CH, :France, :HOT, :BZH]
⋮ => ⋮INFO
For some providers additional configuration steps are necessary, look at the TileProviders.jl documentation for more information.
Identifying your application
Tile servers use the User-Agent header of a request to tell their users apart, and several of them block traffic that does not identify itself - the OSM Tile Usage Policy is the best known example. Tyler therefore names itself and its version in every request it makes, e.g. Tyler.jl/0.2.6 (+https://github.com/MakieOrg/Tyler.jl).
If you build an application on top of Tyler, identify that application instead, ideally together with a way of contacting you:
using Tyler
Tyler.USER_AGENT[] = "MyTownMaps/1.4 (+https://mytownmaps.example.com; maps@example.com)"INFO
Set this before creating a Map, since downloaders read Tyler.USER_AGENT[] when they are created. A single downloader can also be identified separately, via the user_agent keyword of Tyler.ByteDownloader and Tyler.PathDownloader.
Figure size & aspect ratio
Although, the figure size can be controlled by passing additional arguments to Map, it's better to define a Figure first and then continue with a normal Makie's figure creation workflow, namely
using GLMakie, Tyler
using Tyler.TileProviders
provider = TileProviders.OpenTopoMap()
london = Rect2f(-0.0921, 51.5, 0.04, 0.025)
with_theme(theme_dark()) do
fig = Figure(; size =(1200,600))
ax = Axis(fig[1,1]) # aspect = DataAspect()
m = Tyler.Map(london; provider, figure=fig, axis=ax)
wait(m)
hidedecorations!(ax)
hidespines!(ax)
fig
end
Next, we could add any other plot type on top of the ax axis defined above.