No description
Find a file
2025-11-20 11:10:45 +03:00
details.go first commit 2025-11-19 15:44:29 +03:00
go.mod first commit 2025-11-19 15:44:29 +03:00
go.sum first commit 2025-11-19 15:44:29 +03:00
LICENSE first commit 2025-11-19 15:44:29 +03:00
lookup.go first commit 2025-11-19 15:44:29 +03:00
nominatim.go Добавление дополнительного комментария в jsonschema 2025-11-20 11:10:45 +03:00
nominatim_test.go first commit 2025-11-19 15:44:29 +03:00
README.md Fix Readme 2025-11-19 15:47:59 +03:00
reverse.go first commit 2025-11-19 15:44:29 +03:00
search.go first commit 2025-11-19 15:44:29 +03:00

go-nominatim

Go Reference License: MIT

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 для подробностей.

Благодарности