cleanup
This commit is contained in:
parent
cdc4c60618
commit
8fece91f75
16 changed files with 2275 additions and 2252 deletions
144
map.go
Normal file → Executable file
144
map.go
Normal file → Executable file
|
@ -1,72 +1,72 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type NominatimResponse struct {
|
||||
Lat string `json:"lat"`
|
||||
Lon string `json:"lon"`
|
||||
}
|
||||
|
||||
func geocodeQuery(query string) (latitude, longitude string, found bool, err error) {
|
||||
// URL encode the query
|
||||
query = url.QueryEscape(query)
|
||||
|
||||
// Construct the request URL
|
||||
urlString := fmt.Sprintf("https://nominatim.openstreetmap.org/search?format=json&q=%s", query)
|
||||
|
||||
// Make the HTTP GET request
|
||||
resp, err := http.Get(urlString)
|
||||
if err != nil {
|
||||
return "", "", false, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// Read the response
|
||||
var result []NominatimResponse
|
||||
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
|
||||
return "", "", false, err
|
||||
}
|
||||
|
||||
// Check if there are any results
|
||||
if len(result) > 0 {
|
||||
latitude = result[0].Lat
|
||||
longitude = result[0].Lon
|
||||
return latitude, longitude, true, nil
|
||||
}
|
||||
|
||||
return "", "", false, nil
|
||||
}
|
||||
|
||||
func handleMapSearch(w http.ResponseWriter, settings UserSettings, query string, lang string) {
|
||||
// Geocode the query to get coordinates
|
||||
latitude, longitude, found, err := geocodeQuery(query)
|
||||
if err != nil {
|
||||
printDebug("Error geocoding query: %s, error: %v", query, err)
|
||||
http.Error(w, "Failed to find location", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
// Use a template to serve the map page
|
||||
data := map[string]interface{}{
|
||||
"Query": query,
|
||||
"Latitude": latitude,
|
||||
"Longitude": longitude,
|
||||
"Found": found,
|
||||
"Theme": settings.Theme,
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("templates/map.html")
|
||||
if err != nil {
|
||||
printErr("Error loading map template: %v", err)
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
tmpl.Execute(w, data)
|
||||
}
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type NominatimResponse struct {
|
||||
Lat string `json:"lat"`
|
||||
Lon string `json:"lon"`
|
||||
}
|
||||
|
||||
func geocodeQuery(query string) (latitude, longitude string, found bool, err error) {
|
||||
// URL encode the query
|
||||
query = url.QueryEscape(query)
|
||||
|
||||
// Construct the request URL
|
||||
urlString := fmt.Sprintf("https://nominatim.openstreetmap.org/search?format=json&q=%s", query)
|
||||
|
||||
// Make the HTTP GET request
|
||||
resp, err := http.Get(urlString)
|
||||
if err != nil {
|
||||
return "", "", false, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
// Read the response
|
||||
var result []NominatimResponse
|
||||
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
|
||||
return "", "", false, err
|
||||
}
|
||||
|
||||
// Check if there are any results
|
||||
if len(result) > 0 {
|
||||
latitude = result[0].Lat
|
||||
longitude = result[0].Lon
|
||||
return latitude, longitude, true, nil
|
||||
}
|
||||
|
||||
return "", "", false, nil
|
||||
}
|
||||
|
||||
func handleMapSearch(w http.ResponseWriter, settings UserSettings, query string) {
|
||||
// Geocode the query to get coordinates
|
||||
latitude, longitude, found, err := geocodeQuery(query)
|
||||
if err != nil {
|
||||
printDebug("Error geocoding query: %s, error: %v", query, err)
|
||||
http.Error(w, "Failed to find location", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
// Use a template to serve the map page
|
||||
data := map[string]interface{}{
|
||||
"Query": query,
|
||||
"Latitude": latitude,
|
||||
"Longitude": longitude,
|
||||
"Found": found,
|
||||
"Theme": settings.Theme,
|
||||
}
|
||||
|
||||
tmpl, err := template.ParseFiles("templates/map.html")
|
||||
if err != nil {
|
||||
printErr("Error loading map template: %v", err)
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
tmpl.Execute(w, data)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue