Saya memerlukan daftar negara, negara bagian & kota berdasarkan kumpulan nilai lintang / bujur yang saya miliki. Saya perlu menyimpan informasi ini dengan cara yang menjaga hierarki dan tanpa duplikat (mis. "AS" dan "Amerika Serikat" dan "Amerika Serikat" adalah negara yang sama; Saya hanya ingin satu contoh negara ini dalam database saya) .
Apakah ini mungkin dilakukan dengan Google Map API?
google-maps
geolocation
google-maps-api-3
geocoding
StackOverflowNewbie
sumber
sumber
Jawaban:
Apa yang Anda cari disebut geocoding terbalik . Google menyediakan layanan geocoding balik sisi server melalui Google Geocoding API , yang seharusnya dapat Anda gunakan untuk proyek Anda.
Seperti inilah tanggapan terhadap permintaan berikut akan terlihat:
Tanggapan:
Anda juga dapat memilih untuk menerima respons dalam xml daripada json, cukup dengan mengganti json untuk xml di URI permintaan:
Setahu saya, Google juga akan mengembalikan nama yang sama untuk komponen alamat, terutama untuk nama tingkat tinggi seperti nama negara dan nama kota. Namun demikian, perlu diingat bahwa meskipun hasilnya sangat akurat untuk sebagian besar aplikasi, Anda masih dapat menemukan kesalahan ejaan atau hasil yang ambigu.
sumber
sensor=false
dilakukan?Anda memiliki jawaban dasar di sini: Dapatkan nama kota menggunakan geolokasi
Tetapi untuk apa yang Anda cari, saya akan merekomendasikan cara ini.
Hanya jika Anda juga memerlukan administrative_area_level_1, untuk menyimpan berbagai hal untuk Paris, Texas, AS dan Paris, Ile-de-France, Prancis, dan memberikan penggantian manual:
-
Ada masalah dalam cara Michal, yang mengambil hasil pertama, bukan yang tertentu. Dia menggunakan hasil [0]. Cara yang saya anggap sesuai (saya baru saja memodifikasi kodenya) adalah dengan HANYA mengambil hasil yang tipenya adalah "lokalitas", yang selalu ada, bahkan dalam fallback manual yang akhirnya jika browser tidak mendukung geolokasi.
Caranya: hasil yang diambil berbeda dengan menggunakan http://maps.googleapis.com/maps/api/geocode/json?address=bucharest&sensor=false daripada menggunakan http://maps.googleapis.com/maps/api/geocode /json?latlng=44.42514,26.10540&sensor=false (menelusuri menurut nama / menelusuri dengan lat & lng)
Dengan cara ini: hasil yang diambil sama.
sumber
Saya menggunakan pertanyaan ini sebagai titik awal untuk solusi saya sendiri. Pikir itu tepat untuk menyumbangkan kode saya kembali karena lebih kecil dari tabacitu
Dependensi:
Kode:
sumber
Saya menemukan javascript GeoCoder sedikit bermasalah ketika saya memasukkannya ke dalam file jsp saya.
Anda juga dapat mencoba ini:
sumber
$.get(url).success(function(data)
ke$.get(url, function(data)
dan bekerja dengan baikSaya menulis fungsi ini yang mengekstrak apa yang Anda cari berdasarkan hasil
address_components
dari gmaps API. Inilah kotanya (misalnya).Ganti
locality
keadministrative_area_level_1
untuk Negara, dll.Dalam kode js saya, saya menggunakan seperti ini:
Akan kembali:
Waltham, MA
sumber
Coba saja kode ini kode ini bekerja dengan saya
sumber
Saya telah membuat fungsi mapper kecil:
Ini adalah solusi untuk Angular 4 tetapi saya pikir Anda akan mendapatkan idenya.
Pemakaian:
Dengan cara ini
address
objeknya akan menjadi seperti ini:Semoga membantu!
sumber
sumber
@ Szkíta Memiliki solusi hebat dengan membuat fungsi yang mendapatkan bagian alamat dalam larik bernama. Berikut adalah solusi terkompilasi untuk mereka yang ingin menggunakan JavaScript biasa.
Berfungsi untuk mengubah hasil menjadi larik bernama:
Geocode nilai LAT / LNG:
sumber