Go HTTP middleware for the Leaflet.GeotagPhoto plugin.
Documentation is incomplete.
$> go run -mod vendor cmd/example/main.go
2020/04/06 11:28:37 Listening for requests on localhost:8080
This is an abbreviated example of code to demonstrate appending Leaflet.GeotagPhoto
related handlers to an http.ServeMux
instance and updating a user-defined http.Handler
to append Leaflet.GeotagPhoto
Javascript and CSS links to its output.
Error handling has been removed for the sake of brevity.
import (
"github.com/sfomuseum/go-http-leaflet-geotag"
"net/http"
)
func main() {
// code...
geotag_opts := geotag.DefaultLeafletGeotagOptions()
mux := http.NewServeMux()
geotag.AppendAssetHandlers(mux)
camera_handler, _ := PageHandler(t, "camera")
camera_handler = geotag.AppendResourcesHandler(camera_handler, geotag_opts)
mux.Handle("/camera/", camera_handler)
// code...
}
For a complete example please consult cmd/example/main.go. The (Javascript) code for the web application itself is contained in the HTML files in the templates/html directory.
This package uses a modified version of the Leaflet.GeotagPhoto.js
file that is part of the original Leaflet.GeotagPhoto. It encodes all the static assets (icons and markers) as base64-encoded data URIs rather than linking to the resources themselves. This is to account for situations where an application may be run inside or behind one or more load balancers or proxies and where keeping track of URL rewriting rules becomes a burden.