2.3 KiB
2.3 KiB
Untuk ambil alamat dari longitude–latitude itu namanya reverse geocoding. Ada beberapa cara, tergantung mau pakai API online atau offline.
✅ Cara PALING UMUM: Google Maps Reverse Geocoding
Contoh koordinat
lat = -6.200000
lng = 106.816666
🔹 JavaScript (fetch)
const lat = -6.2;
const lng = 106.816666;
const apiKey = "API_KEY_KAMU";
fetch(`https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=${apiKey}`)
.then(res => res.json())
.then(data => {
console.log(data.results[0].formatted_address);
});
📌 Output contoh:
Jakarta, Daerah Khusus Ibukota Jakarta, Indonesia
🔹 Response penting dari Google
{
"formatted_address": "Jl. MH Thamrin No.1, Jakarta Pusat, Indonesia",
"address_components": [
{ "long_name": "Jakarta Pusat", "types": ["administrative_area_level_2"] }
]
}
✅ Alternatif GRATIS (tanpa API key): OpenStreetMap (Nominatim)
⚠️ Ada rate limit (jangan spam)
JavaScript
fetch(`https://nominatim.openstreetmap.org/reverse?lat=-6.2&lon=106.816666&format=json`)
.then(res => res.json())
.then(data => {
console.log(data.display_name);
});
📌 Output:
Jakarta Pusat, DKI Jakarta, Indonesia
✅ Flutter (sering dipakai di mobile)
Pakai geocoding package
import 'package:geocoding/geocoding.dart';
List<Placemark> placemarks =
await placemarkFromCoordinates(-6.2, 106.816666);
Placemark place = placemarks.first;
print(place.street);
print(place.locality);
print(place.country);
✅ Golang (pakai OpenStreetMap)
resp, _ := http.Get(
"https://nominatim.openstreetmap.org/reverse?lat=-6.2&lon=106.816666&format=json",
)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result["display_name"])
⚠️ Penting diketahui
- Reverse geocoding tidak 100% presisi
- Bisa beda hasil antar provider
- Google = paling akurat, tapi berbayar
- OSM = gratis, tapi lebih lambat
🔥 Mau hasil lebih detail?
Kamu bisa ambil:
- Jalan
- Kecamatan
- Kota
- Provinsi
- Kode pos
Tinggal bilang:
- pakai bahasa apa (JS / Flutter / Go)
- provider (Google / OSM / Mapbox)
- mau online atau offline
Nanti aku bikinin contoh siap copy–paste 👍