Lewati ke konten

Wilayah

Data wilayah mengikuti Kepmendagri 300.2.2-2138/2025 sebagaimana diubah 300.2.2-2430/2025. Setiap level menambah satu segmen kode:

  1. Provinsi province31DKI Jakarta38
  2. Kabupaten/kota regency31.71Jakarta Pusat514
  3. Kecamatan district31.71.01Gambir7.285
  4. Desa/kelurahan village31.71.01.1001Gambir83.762
  • GambirKecamatan31.71.01Daerah Khusus Ibukota Jakarta › Kota Administrasi Jakarta Pusat
  • GambirDesa/kelurahan31.71.01.1001Daerah Khusus Ibukota Jakarta › Kota Administrasi Jakarta Pusat › Gambir
  • GambiranKecamatan35.10.07Jawa Timur › Kabupaten Banyuwangi
  • Gambir BaruDesa/kelurahan12.09.20.1012Sumatera Utara › Kabupaten Asahan › Kota Kisaran Timur
  • GambirmanisDesa/kelurahan33.12.01.2004Jawa Tengah › Kabupaten Wonogiri › Pracimantoro
  • GambiranomDesa/kelurahan33.12.07.2006Jawa Tengah › Kabupaten Wonogiri › Baturetno

Jalan di browser kamu.

Kode boleh ditulis dengan atau tanpa titik, spasi, atau strip (3171, 31.71, 31 71).

Go TypeScript Hasil
region.Get(code) region.get(code) Satu wilayah dengan kode terkini
region.Resolve(code) region.resolve(code) Seperti Get, tetapi mengikuti kode yang berubah karena pemekaran Kalimantan Utara 2012 dan Papua 2022
region.Children(code) region.children(code) Anak langsung, "" untuk semua provinsi
region.Search(q, opts) region.search(q, opts) Wilayah yang namanya cocok dengan q, terbaik dulu
region.ByPlate(code) region.byPlate(code) Kabupaten/kota yang memakai kode plat seperti DR
region.ByAreaCode(code) region.byAreaCode(code) Provinsi atau kabupaten/kota di balik kode area telepon
region.FromNIK(nik) region.fromNik(nik) Nama provinsi, kabupaten/kota, dan kecamatan dari NIK

Di TypeScript semua fungsinya async, karena data kecamatan dan desa dipecah per provinsi dan baru dimuat saat dibutuhkan. Indeks provinsi, kabupaten/kota, alias, plat, dan kode area kurang dari 16 KB gzip. Di Go, data dimuat sekali saat pertama dipakai (sekitar 10 ms).

Chunk per provinsi memakai import() dinamis. Vite, webpack, Rollup, dan esbuild dengan splitting: true menghasilkannya sebagai file terpisah. Kalau bundler-mu menggabungkan import dinamis, semua provinsi masuk ke satu file (sekitar 500 KB gzip). Jadi aktifkan code splitting untuk build browser.

Go SearchOptions TypeScript Arti
Level level Hanya satu level: province, regency, district, village
Within within Hanya turunan kode ini
Limit limit 1 sampai 100, default 10

Pencocokan tidak membedakan huruf besar/kecil dan mengabaikan awalan Kabupaten/Kota. Nama yang persis sama muncul pertama, lalu awalan, awal kata, kemudian potongan kata mana pun. Query dibatasi 256 karakter.

Mencari kecamatan atau desa tanpa within akan membaca semua provinsi. Di browser, isi within supaya cuma satu provinsi yang dimuat.

Field Catatan
province Selalu ada
regency Ada jika kabupaten/kotanya masih ada
district Ada jika kecamatannya masih ada
historical true kalau NIK memakai kode sebelum pemekaran. Namanya tetap nama terkini

length, charset, unknown (kode strukturnya benar tetapi tidak ada), options.

package main
import (
"fmt"
"github.com/haikalmumtaz233/nusaindex/region"
)
func main() {
regency, err := region.Get("31.71")
if err == nil {
fmt.Println(regency.Name, regency.Level, regency.ParentCode)
}
districts, err := region.Children("31.71")
if err == nil {
fmt.Println(len(districts), districts[0].Name)
}
found, err := region.Search("gambir", region.SearchOptions{Level: region.LevelDistrict, Limit: 2})
if err == nil {
for _, r := range found {
fmt.Println(r.Code, r.Name)
}
}
current, err := region.Resolve("91.04")
if err == nil {
fmt.Println(current.Code, current.Name)
}
byPlate, err := region.ByPlate("DR")
if err == nil {
fmt.Println(len(byPlate), byPlate[0].Name)
}
byArea, err := region.ByAreaCode("0274")
if err == nil {
fmt.Println(byArea[0].Code, byArea[0].Name)
}
place, err := region.FromNIK("7502010706599583")
if err == nil {
fmt.Println(place.Province.Name, place.Regency.Name, place.District.Name, place.Historical)
}
}
Keluaran
Kota Administrasi Jakarta Pusat regency 31
8 Gambir
31.71.01 Gambir
35.10.07 Gambiran
94.01 Kabupaten Nabire
5 Kabupaten Lombok Barat
34.71 Kota Yogyakarta
Gorontalo Kabupaten Boalemo Paguyaman false