Saya ingin membuat aplikasi yang memeriksa tempat terdekat di mana pengguna berada. Saya dapat dengan mudah mendapatkan lokasi pengguna dan saya sudah memiliki daftar tempat dengan lintang dan bujur.
Apa cara terbaik untuk mengetahui tempat terdekat dari daftar dengan lokasi pengguna saat ini.
Saya tidak dapat menemukan apa pun di Google API.
android
geolocation
maps
Chmouel Boudjnah
sumber
sumber
import android.location.Location;
atau yanghttp://developer.android.com/reference/android/location/Location.html
Lihatlah ke distanceTo atau distanceBetween. Anda dapat membuat objek Lokasi dari lintang dan bujur:
sumber
distanceTo
metode.Solusi yang diperkirakan (berdasarkan proyeksi persegi panjang), jauh lebih cepat (hanya membutuhkan 1 trigonometri dan 1 akar kuadrat).
Perkiraan ini relevan jika poin Anda tidak terlalu berjauhan. Ini akan selalu melebihi perkiraan dibandingkan dengan jarak haversine yang sebenarnya. Misalnya, jarak tidak lebih dari 0,05382% akan dijumlahkan jika garis lintang atau bujur delta antara dua titik Anda tidak melebihi 4 derajat desimal .
Rumus standar (Haversine) adalah yang tepat (yaitu, rumus ini berfungsi untuk beberapa bujur / lintang di bumi) tetapi jauh lebih lambat karena dibutuhkan 7 trigonometri dan 2 akar kuadrat. Jika pasangan titik Anda tidak terlalu jauh, dan ketepatan absolut tidak terpenting, Anda dapat menggunakan versi perkiraan ini (Equirectangular), yang jauh lebih cepat karena hanya menggunakan satu trigonometri dan satu akar kuadrat.
Anda dapat mengoptimalkan ini lebih lanjut dengan:
Untuk info lebih lanjut lihat: http://www.movable-type.co.uk/scripts/latlong.html
Ada implementasi referensi yang bagus dari formula Haversine dalam beberapa bahasa di: http://www.codecodex.com/wiki/Calculate_Distance_Between_Two_Points_on_a_Globe
sumber
O(n)
. SebagaiO(1)
solusi, gunakan indeks spasial 2D untuk memangkas potensi kecocokan sebelum menghitung solusi yang tepat. Kami meninggalkan ruang lingkup pertanyaan ini :)Ada beberapa metode yang dapat Anda gunakan, tetapi untuk menentukan mana yang terbaik, pertama-tama kita perlu mengetahui apakah Anda mengetahui ketinggian pengguna, serta ketinggian titik lainnya?
Bergantung pada tingkat akurasi yang Anda kejar, Anda dapat melihat rumus Haversine atau Vincenty ...
Halaman-halaman ini merinci rumus, dan, bagi yang kurang tertarik secara matematis juga memberikan penjelasan tentang bagaimana menerapkannya dalam skrip!
Formula Haversine: http://www.movable-type.co.uk/scripts/latlong.html
Formula Vincenty: http://www.movable-type.co.uk/scripts/latlong-vincenty.html
Jika Anda memiliki masalah dengan makna apa pun dalam rumus, cukup beri komentar dan saya akan melakukan yang terbaik untuk menjawabnya :)
sumber
Ada dua cara untuk mendapatkan jarak antara LatLng.
Lihat ini
dan kedua
public float distanceTo (Location dest)
seperti yang dijawab oleh praveen.sumber
sumber
Cukup gunakan metode berikut, berikan garis lintang dan panjang dan dapatkan jarak dalam meter:
sumber
Anda bisa mendapatkan jarak dan waktu menggunakan Google Map API Google Map API
cukup lewati JSON yang diunduh ke metode ini Anda akan mendapatkan Jarak dan Waktu waktu nyata antara dua latlong
sumber
sumber