No description
- Go 100%
| details.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| lookup.go | ||
| nominatim.go | ||
| nominatim_test.go | ||
| README.md | ||
| reverse.go | ||
| search.go | ||
go-nominatim
Go клиентская библиотека для Nominatim, геокодера OpenStreetMap.
Возможности
- Поиск мест по запросу или структурированным параметрам
- Обратное геокодирование (координаты в адрес)
- Поиск по OSM ID (узлы, линии, отношения)
- Получение подробной информации о конкретных местах
- Поддержка нескольких форматов вывода (JSON, JSONv2, GeoJSON, GeocodeJSON)
- Настраиваемые таймауты и проверка TLS
- Автоматическая обработка параметров по умолчанию
Установка
go get git.ymnuktech.ru/ymnuk/go-nominatim
Использование
Базовая настройка
package main
import (
"fmt"
"git.ymnuktech.ru/ymnuk/go-nominatim/nominatim"
)
func main() {
// Создание нового клиента Nominatim с настройками по умолчанию
client := nominatim.NewNominatim(nil)
// Или с пользовательскими настройками
opts := &nominatim.Opts{
Timeout: 30,
TlsVerify: true,
BaseUrl: "https://nominatim.openstreetmap.org",
}
client := nominatim.NewNominatim(opts)
}
Поиск
// Поиск по запросу
searchOpts := &nominatim.SearchOpts{
Query: "Times Square, New York",
}
results, err := client.Search(searchOpts)
if err != nil {
panic(err)
}
fmt.Printf("Найдено %d результатов\n", len(results))
// Поиск со структурированными параметрами
searchOpts := &nominatim.SearchOpts{
City: "Москва",
Country: "Россия",
Parameters: &nominatim.SearchParameters{
Format: nominatim.OutputFormatGeoJSON,
Limit: &limit,
AddressDetails: &addressDetails,
},
}
results, err := client.Search(searchOpts)
Обратное геокодирование
reverseOpts := &nominatim.ReversehOpts{
Lon: 13.4050,
Lat: 52.5200,
Parameters: &nominatim.SearchParameters{
Format: nominatim.OutputFormatJson,
},
}
result, err := client.Reverse(reverseOpts)
if err != nil {
panic(err)
}
fmt.Printf("Адрес: %v\n", result)
Поиск по OSM ID
lookupOpts := &nominatim.OsmIDOpts{
NodeIDs: []int{12345, 67890},
WayIDs: []int{11111},
RelationIDs: []int{22222},
Parameters: &nominatim.SearchParameters{
Format: nominatim.OutputFormatJson,
},
}
results, err := client.Lookup(lookupOpts)
if err != nil {
panic(err)
}
fmt.Printf("Найдено %d результатов\n", len(results))
Получение подробной информации
detailsOpts := &nominatim.DetailsOpts{
OsmType: nominatim.OsmTypeNode,
OsmID: 123456789,
Parameters: &nominatim.SearchParameters{
Format: nominatim.OutputFormatJson,
},
}
result, err := client.Details(detailsOpts)
if err != nil {
panic(err)
}
fmt.Printf("Детали: %v\n", result)
Справочник API
См. Go Reference для подробной документации API.
Лицензия
Этот проект лицензирован по лицензии MIT - см. файл LICENSE для подробностей.