Add new map provider OpenSeaMap & overlay example (#114)

* Add new map provider OpenSeaMap & overlay example

* better comment

---------

Co-authored-by: Florian Pigorsch <fpigorsch@gmail.com>
This commit is contained in:
Jérôme Labidurie 2025-06-18 18:31:50 +02:00 committed by GitHub
parent 10e305d31e
commit 8da1c6fb74
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 0 deletions

31
examples/overlay/main.go Normal file
View File

@ -0,0 +1,31 @@
// This is an example on how to use a map overlay.
package main
import (
sm "github.com/flopp/go-staticmaps"
"github.com/fogleman/gg"
"github.com/golang/geo/s2"
)
func main() {
ctx := sm.NewContext()
ctx.SetSize(1600, 1200)
ctx.SetCenter(s2.LatLngFromDegrees(48.78110, -3.59638))
ctx.SetZoom(15)
// base map
ctx.SetTileProvider(sm.NewTileProviderOpenStreetMaps())
// OpenSeaMap as a overlay to the base map
ctx.AddOverlay(sm.NewTileProviderOpenSeaMap())
img, err := ctx.Render()
if err != nil {
panic(err)
}
if err := gg.SavePNG("overlay.png", img); err != nil {
panic(err)
}
}

View File

@ -122,6 +122,17 @@ func NewTileProviderOpenCycleMap() *TileProvider {
return t
}
// NewTileProviderOpenSeaMap creates a TileProvider struct for OpenSeaMap's tile service
func NewTileProviderOpenSeaMap() *TileProvider {
t := new(TileProvider)
t.Name = "sea"
t.Attribution = "Maps and Data (c) openstreetmaps.org and contributors, ODbL"
t.TileSize = 256
t.URLPattern = "http://t1.openseamap.org/seamark/%[2]d/%[3]d/%[4]d.png"
t.Shards = []string{}
return t
}
// NewTileProviderCarto creates a TileProvider struct for Carto's tile service
// See https://github.com/CartoDB/basemap-styles?tab=readme-ov-file#1-web-raster-basemaps for available names
func NewTileProviderCarto(name string) *TileProvider {
@ -179,6 +190,7 @@ func GetTileProviders(thunderforestApiKey string) map[string]*TileProvider {
NewTileProviderOpenTopoMap(),
NewTileProviderOpenStreetMaps(),
NewTileProviderOpenCycleMap(),
NewTileProviderOpenSeaMap(),
NewTileProviderCarto("rastertiles/voyager"),
NewTileProviderCartoLight(),
NewTileProviderCartoDark(),