Membuat objek Location di Android dengan nilai latitude dan longitude

140

Saya memiliki program di mana nilai lintang dan bujur suatu lokasi disimpan dalam database, yang saya unduh.

Saya ingin mendapatkan jarak antara koordinat ini, dan lokasi saya saat ini.

Kelas Lokasi memiliki metode sederhana untuk menemukan jarak antara dua objek Lokasi, jadi saya pikir saya akan membuat objek Lokasi dengan koordinat, lalu memanggil metode tersebut.

Adakah cara mudah untuk melakukan ini? Juga, jika ada persamaan lain yang andal dan cukup sederhana yang tidak akan terlalu mengacaukan banyak hal, itu juga akan berhasil. Terima kasih.

(android.location.Location)

fonduman
sumber
Lihat stackoverflow.com/questions/8049612/… untuk lebih lanjut
Paul Thompson

Jawaban:

315

Dengan asumsi bahwa Anda sudah memiliki objek lokasi dengan lokasi Anda saat ini.

Location targetLocation = new Location("");//provider name is unnecessary
targetLocation.setLatitude(0.0d);//your coords of course
targetLocation.setLongitude(0.0d);

float distanceInMeters =  targetLocation.distanceTo(myLocation);
Androiderson
sumber
1
+1 sebagai komentar dalam jawaban ini, meskipun diringkas dan sederhana, sebenarnya sangat membantu. Terima kasih @Exception Al
Subby
2
Contoh dokumentasi yang benar-benar buruk untuk Android, cukup menyia-nyiakan waktu untuk ini. Pertanyaan saya yang lain adalah misalkan saya menyediakan penyedia yang valid seperti gps, apakah itu akan memberi saya lokasi saat ini? Dengan kata lain apa pentingnya penyedia
Utsav Gupta
Jika Anda memerlukan nilai default untuk objek Lokasi dan karena Anda tidak dapat menginisialisasi dengan lintang / bujur, saya sarankan untuk menyetelnya dalam penginisialisasi statis, misalnyastatic { location.setLatitude(0.0d); location.setLongitude(0.0d); }
Jason Hartley
Ya, saya melewatkan menulis 'd' dan saya tidak dapat membuat objek lokasi. Kesalahan kecil yang konyol
zulkarnain shah
1
mengapa dalam pengujian unit tidak berpengaruh apa pun saat saya menyetel Lintang dan Bujur pada objek Lokasi. Objek lokasi entah bagaimana nihil!?!?
Ewoks
30

Anda dapat membuat lokasi menggunakan konstruktornya , lalu menyetel nilai lintang dan bujur.

final Location location = new Location("yourprovidername");
location.setLatitude(1.2345d);
location.setLongitude(1.2345d);
dst
sumber
1
@d Apa "yourprovidername"?
ban-geoengineering
@ ban-geoengineering biarkan kosong "" tidak perlu.
Alp Altunel
14

Saya menjawab ini lagi, karena banyak orang seperti saya tidak tahu apa itu "providername"sebenarnya. Kode di bawah ini menjawab pertanyaan:

Location location = new Location(LocationManager.GPS_PROVIDER);
location.setLatitude(23.5678);
location.setLongitude(34.456);

Di sini saya gunakan LocationManager.GPS_PROVIDERsebagai nama provider.

Vijay E
sumber
Mengapa LocationManager.GPS_PROVIDERdan apakah ada alternatif yang bisa kita pertimbangkan?
ban-geoengineering
1
Ada 2 lagi, yaitu PASSIVE dan NETWORK_PROVIDER. Berikut ini penjelasan yang bagus tentang mengapa dan apa yang harus digunakan. stackoverflow.com/questions/6775257/…
Vijay E
1
Jika locationobjek dibuat secara manual, bukankah lebih tepat menggunakan string kosong daripada LocationManager.GPS_PROVIDER, LocationManager.PASSIVEatau LocationManager.NETWORK_PROVIDER?
ban-geoengineering