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)


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);

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);

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.