Beberapa cara untuk menemukan lokasi geografis: Alamat IP, GPS, WiFi, GSM/CDMA
Proses akuisisi lokasi geografis :1. Pengguna membuka aplikasi web yang perlu mendapatkan lokasi geografis.
2. Aplikasi meminta browser ke lokasi geografis, dan browser memunculkan pertanyaan untuk menanyakan apakah pengguna berbagi lokasi geografis.
3. Dengan asumsi bahwa pengguna mengizinkannya, browser akan meminta informasi yang relevan dari pengaturan.
4. Browser mengirimkan informasi yang relevan ke server lokasi tepercaya, dan server kembali ke lokasi geografis tertentu.
Implementasi status geografis HTML5 :1. Menerapkan teknologi untuk mendapatkan pengguna berdasarkan browser (tidak diperlukan dukungan backend)
2. Temukan lokasi geografis pengguna secara akurat (akurasinya hingga 10m, tergantung pada peralatan)
3. Lacak Lokasi Geografis Pengguna
4. Secara interaktif menyajikan informasi lokasi dengan Google Map atau Baidu Map
API geolokasi digunakan untuk berbagi informasi geolokasi pengguna saat ini dengan situs tepercaya, yang melibatkan privasi dan masalah keamanan pengguna. Oleh karena itu, ketika suatu situs perlu mendapatkan geolokasi pengguna saat ini, browser akan meminta pengguna untuk mengizinkan atau menolak.
Pertama -tama mari kita lihat browser mana yang mendukung API geolokasi:
IE9.0+, ff3.5+, safari5.0+, chrome5.0+, opera10.6+, iPhone3.0+, android2.0+
API geolokasi ada di objek navigator dan hanya berisi 3 metode:
1. GetCurrentPosition // Lokasi Saat Ini
2. WatchPosition // Lokasi Pemantauan
3. Clearwatch // Clear Monitoring
navigator.geolocation.getCurrentPosition (…, function (error) {
switch (error.code) {
case error.timeout:
peringatan ("Koneksi waktu keluar, coba lagi");
merusak;
case error.permission_denied:
Peringatan ("Anda menolak penggunaan layanan berbagi lokasi, kueri telah dibatalkan");
merusak;
case error.position_unavailable:
peringatan (", maaf, Anda tidak dapat memberikan layanan lokasi ke planet Anda untuk saat ini");
merusak;
}
});
WatchPosition seperti pelacak yang dipasangkan dengan Clearwatch.
WatchPosition agak seperti cara setInterval dan ClearInterval.
var watchpositionId = navigator.geolocation.watchposition (success_callback, error_callback, opsi);
navigator.geolocation.clearwatch (WatchPositionID);
HTML 5 menyediakan serangkaian API seperti lokasi geografis untuk digunakan pengguna, yang memfasilitasi pengguna untuk membuat aplikasi geografis LBS. Pertama, di browser yang mendukung HTML 5, ketika membuka API, ia akan menanyakan apakah pengguna setuju untuk menggunakan API, jika tidak itu tidak akan diaktifkan, memastikan keamanan.
1. Nyalakan untuk menentukan apakah browser mendukung API LBSfungsi isGeOloceAvailable ()
{
var location = "Tidak, geolokasi tidak didukung oleh browser ini.";
if (window.navigator.geolocation) {
Lokasi = "Ya, geolokasi didukung oleh browser ini.";
}
peringatan (lokasi);
}
Dalam contoh di atas, pengecualian juga terperangkap dalam metode DisplayError;
2. Dapatkan lokasi geografis penggunaIni dilakukan dengan menggunakan GetCurrentPosition;
fungsi requestPosition () {
if (nav == null) {
nav = window.navigator;
}
if (nav! = null) {
var geoloc = nav.geolocation;
if (geoloc! = null) {
geoloc.getCurrentPosition (SuccessCallback);
}
kalau tidak {
Peringatan ("API Geolokasi tidak didukung di browser Anda");
}
}
kalau tidak {
peringatan ("Navigator tidak ditemukan");
}
}
Ketika lokasi geografis berhasil diperoleh, metode panggilan balik akan dihasilkan untuk memproses hasil yang dikembalikan.
function setLocation (val, e) {
document.geteLementById (e) .value = val;
}
Fungsi SuccessCallback (Posisi)
{
setLocation (position.coords.latitude, "latitude"); setLocation (position.coords.longitude, "bujur");
}
3. Pertanyaan yang sangat umum adalah bagaimana melacak lokasi geografis pengguna yang berubah. Di sini kami merangkum kedua API yang digunakan.1 Watchposition
Contohnya adalah sebagai berikut:
function listenforpositionupdates () {
if (nav == null) {
nav = window.navigator;
}
if (nav! = null) {
var geoloc = nav.geolocation;
if (geoloc! = null) {
watchId = geoloc.watchposition (SuccessCallback);
} kalau tidak {
Peringatan ("API Geolokasi tidak didukung di browser Anda");
}
} kalau tidak {
peringatan ("Navigator tidak ditemukan");
}
}
Kemudian di SuccessCallback, Anda dapat mengatur lokasi geografis terbaru untuk ditampilkan:
Function SuccessCallback (position) {
setText (position.coords.latitude, "latitude"); setText (position.coords.longitude, "bujur");
}
Jika Anda tidak ingin pelacakan real-time, Anda dapat membatalkannya:
fungsi clearwatch (watchId) {
window.navigator.geolocation.clearwatch (watchID);
}
4. Cara menangani pengecualianKetika pengecualian ditemui, Anda dapat menangkapnya:
if (geoloc! = null) {
geoloc.getCurrentPosition (SuccessCallback, ErrorCallback);
}
function errorCallback (error) {
var message = "";
switch (error.code) {
case error.permission_denied:
pesan = "Situs web ini tidak memiliki izin untuk digunakan"
+ "API Geolokasi";
merusak;
case error.position_unavailable:
pesan = "Posisi saat ini tidak dapat ditentukan.";
merusak;
case error.permission_desied_timeout:
pesan = "posisi saat ini tidak dapat ditentukan"
+ "dalam periode batas waktu yang ditentukan.";
merusak;
}
if (message == "") {
var strerrorCode = error.code.toString ();
pesan = "Posisi tidak dapat ditentukan karena"
+ "kesalahan yang tidak diketahui (kode:" + strerrorcode + ").";
}
waspada (pesan);
}
5. Tampilkan lokasi di Google Map (asalkan API Google Map diatur)fungsi getCurrentLocation ()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition (showmyposition, showerror);
}
kalau tidak
{
Peringatan ("Tidak, API Geolokasi tidak didukung oleh browser ini.");
}
}
fungsi showmyposition (posisi)
{
var koordinat = position.coords.latitude+","+position.coords.longitude;
var map_url = "http://maps.googleapis.com/maps/api/staticmap?center="
+koordinat+"& zoom = 14 & ukuran = 300x300 & sensor = false";
document.geteLementById ("googlemap"). innerHtml = "<img src = '"+map_url+"' />";
}
function showerror (kesalahan)
{
sakelar (kesalahan.code)
{
case error.permission_denied:
Peringatan ("Situs web ini tidak memiliki izin untuk menggunakan API geolokasi")
merusak;
case error.position_unavailable:
waspada ("Posisi saat ini tidak dapat ditentukan.")
merusak;
case error.timeout:
peringatan ("Posisi saat ini tidak dapat ditentukan dalam periode waktu keluar yang ditentukan.")
merusak;
case error.unknown_error:
waspada ("Posisi tidak dapat ditentukan karena kesalahan yang tidak diketahui.")
merusak;
}
}