Skip to content

woojubb/browser-reverse-geocoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

browser-reverse-geocoder

A lightweight, browser-based reverse geocoding library that converts geographic coordinates (latitude and longitude) into human-readable addresses. This library uses GeoJSON data for geocoding, making it flexible and customizable for various regions and address formats.

Features

  • Pure JavaScript implementation, works entirely in the browser
  • Uses efficient spatial indexing for fast lookups
  • Supports custom GeoJSON datasets
  • Configurable address formatting
  • No external API calls required, ensuring privacy and offline capability

Ideal for web applications that need to perform reverse geocoding without relying on external services. Simply provide your own GeoJSON data, and browser-reverse-geocoder will handle the rest!

Installation

npm install browser-reverse-geocoder

Usage

import BrowserReverseGeocoder from 'browser-reverse-geocoder';

const geocoder = new BrowserReverseGeocoder();
await geocoder.init('path/to/your/geojson/file.json');

const address = geocoder.reverseGeocode(longitude, latitude);
console.log(address);

Example

import BrowserReverseGeocoder from 'browser-reverse-geocoder';

const geocoder = new BrowserReverseGeocoder();
await geocoder.init('https://woojubb.github.io/korea-district-geo-converter/dist/districts.kr.json'); // sample district data from https://github.com/woojubb/korea-district-geo-converter

const address = geocoder.reverseGeocode(longitude, latitude);
console.log(address);

GeoJSON Data Format Example

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "BASE_DATE": "20230701",
        "ADM_NM": "가경동",
        "ADM_CD": "33043540",
        "provinceCode": 33,
        "provinceName": "충청북도",
        "districtCode": "043",
        "districtName": "청주시 흥덕구",
        "townCode": "540",
        "townName": "가경동",
        "code": "33043540"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [127.4262, 36.611363],
            [127.423469, 36.618088],
            [127.42674, 36.623778],
            [127.430923, 36.623946],
            [127.428373, 36.628201],
            [127.432226, 36.632508],
            [127.438588, 36.632792],
            [127.444721, 36.620543],
            [127.444652, 36.616353],
            [127.439834, 36.612288],
            [127.432166, 36.609233],
            [127.426964, 36.609848],
            [127.4262, 36.611363]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "BASE_DATE": "20230701",
        "ADM_NM": "가곡동",
        "ADM_CD": "38080550",
        "provinceCode": 38,
        "provinceName": "경상남도",
        "districtCode": "080",
        "districtName": "밀양시",
        "townCode": "550",
        "townName": "가곡동",
        "code": "38080550"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [128.796795, 35.482],
            [128.803182, 35.474852],
            [128.80228, 35.473018],
            [128.798743, 35.473408],
            [128.794877, 35.471113],
            [128.793429, 35.468272],
            [128.794613, 35.464561],
            [128.79195, 35.46027],
            [128.785707, 35.460265],
            [128.782834, 35.466868],
            [128.780282, 35.468931],
            [128.767829, 35.468914],
            [128.75684, 35.474505],
            [128.760006, 35.476792],
            [128.764424, 35.485343],
            [128.770225, 35.481091],
            [128.780892, 35.483359],
            [128.781997, 35.481956],
            [128.792752, 35.485766],
            [128.796795, 35.482]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "BASE_DATE": "20230701",
        "ADM_NM": "가곡면",
        "ADM_CD": "32070350",
        "provinceCode": 32,
        "provinceName": "강원특별자치도",
        "districtCode": "070",
        "districtName": "삼척시",
        "townCode": "350",
        "townName": "가곡면",
        "code": "32070350"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [129.182561, 37.202145],
            [129.190173, 37.198119],
            [129.193249, 37.191528],
            [129.198483, 37.186729],
            [129.210437, 37.187408],
            [129.213875, 37.185347],
            [129.219458, 37.186998],
            [129.222436, 37.186247],
            [129.228608, 37.173104],
            [129.227882, 37.170512],
            [129.224768, 37.168864],
            [129.22422, 37.160911]
          ]
        ]
      }
    }
  ]
}

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

About

Efficient, customizable, and privacy-friendly reverse geocoding in the browser using GeoJSON.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published