Saat saya mengklik peta, manakah cara terbaik untuk menemukan penanda atau penanda terdekat? apakah ada beberapa fungsi dalam api yang akan membantu saya melakukan itu?
itu google map api v3.
google-maps
google-maps-api-3
pengguna198003
sumber
sumber
Jawaban:
Pertama, Anda harus menambahkan eventlistener
Kemudian buat fungsi yang mengulang melalui larik penanda dan menggunakan rumus haversine untuk menghitung jarak setiap penanda dari klik.
Ini melacak penanda terdekat dan memberi tahu judulnya.
Saya memiliki penanda sebagai larik pada objek peta saya
sumber
Anda bisa menggunakan metode computeDistanceBetween () di namespace google.maps.geometry.spherical .
sumber
Saya ingin memperluas saran Leor untuk siapa pun yang bingung tentang cara menghitung lokasi terdekat dan benar-benar memberikan solusi yang berfungsi:
Saya menggunakan penanda dalam
markers
larik misalnyavar markers = [];
.Kalau begitu mari kita posisikan sebagai sesuatu seperti
var location = new google.maps.LatLng(51.99, -0.74);
Kemudian kami hanya mengurangi penanda kami terhadap lokasi yang kami miliki seperti:
Yang muncul adalah
LatLng
objek penanda terdekat Anda .sumber
Formula di atas tidak berhasil untuk saya, tetapi saya menggunakan ini tanpa masalah. Teruskan lokasi Anda saat ini ke fungsi, dan putar melalui larik penanda untuk menemukan yang terdekat:
sumber
markers
array? Apakah dengan membuat penanda menggunakanvar marker1 = new google.maps.Marker({ ... })
?map.markers = map.markers || [];
lalu untuk setiap penandamap.markers.push(marker);
Apakah Anda mengetahui ekstensi spasial Mysql ?
Anda bisa menggunakan sesuatu seperti MBRContains (g1, g2) .
sumber
Berikut adalah fungsi lain yang bekerja sangat baik untuk saya, mengembalikan jarak dalam kilometer:
sumber
Gunakan metode Google map API computeDistanceBetween () untuk menghitung penanda dekat antara lokasi Anda dan daftar penanda di peta google.
Langkah:-
Buat penanda di peta google.
function addMarker(location) { var marker = new google.maps.Marker({ title: 'User added marker', icon: { path: google.maps.SymbolPath.BACKWARD_CLOSED_ARROW, scale: 5 }, position: location, map: map }); }
Di Mouse klik buat acara untuk mendapatkan lintang, bujur dari lokasi Anda dan teruskan ke find_closest_marker ().
kunjungi tautan ini ikuti langkah-langkahnya. Anda akan bisa mendapatkan penanda lebih dekat ke lokasi Anda.
sumber