Menggunakan kode JavaScript yang relatif sederhana, Anda dapat membuat aplikasi web yang dapat menentukan detail lokasi geografis pengguna, termasuk garis lintang dan bujur dan ketinggian. Beberapa aplikasi web bahkan dapat menyediakan fungsi navigasi dengan memantau pergerakan lokasi pengguna dari waktu ke waktu, yang juga mengintegrasikan sistem peta seperti API Googlemaps.
HTML5 menyediakan API geolokasi untuk menentukan lokasi pengguna. Kami dapat menggunakan fitur HTML5 ini untuk mengembangkan aplikasi berdasarkan informasi geolokasi. Artikel ini menggabungkan contoh untuk berbagi dengan Anda cara menggunakan HTML5 dan menggunakan antarmuka Baidu dan Google Map untuk mendapatkan informasi lokasi geografis yang akurat pengguna.
Geolokasi adalah fitur baru HTML5, sehingga hanya dimungkinkan untuk menjalankan browser modern yang mendukung HTML5, terutama perangkat genggam seperti iPhone, di mana geolokasi lebih akurat. Pertama, kita perlu mendeteksi apakah browser perangkat pengguna mendukung geolokasi, dan jika demikian, dapatkan informasi geografis. Perhatikan bahwa fitur ini dapat melanggar privasi pengguna. Kecuali jika persetujuan pengguna adalah, informasi lokasi pengguna tidak tersedia, jadi ketika kami mengakses aplikasi, kami akan meminta apakah akan mengizinkan geolokasi, dan tentu saja kami dapat memilih untuk mengizinkan.
- functionGetLocation () {
- if (navigator.geolocation) {
- navigator.geolocation.getCurrentPosition (showposition, showerror);
- }kalau tidak{
- waspada (browser tidak mendukung geolokasi.);
- }
- }
Kode di atas menunjukkan bahwa jika perangkat pengguna mendukung geolokasi, jalankan metode getCurrentPosition (). Jika getCurrentPosition () berjalan dengan sukses, objek koordinat dikembalikan ke fungsi yang ditentukan dalam showposisi parameter. Parameter kedua dari metode getCurrentPosition () digunakan untuk menangani kesalahan, yang menentukan fungsi yang berjalan ketika lokasi pengguna gagal mendapatkannya.
Pertama -tama mari kita lihat fungsi showerror (), yang menentukan penanganan beberapa kode kesalahan saat mendapatkan lokasi geografis pengguna:
- functionshowerror (error) {
- switch (error.code) {
- caseerror.permission_desied:
- peringatan (lokalisasi gagal, pengguna menolak untuk meminta geolokasi);
- merusak;
- caseerror.position_unavailable:
- Peringatan (Gagal Lokalisasi, Informasi Lokasi tidak tersedia);
- merusak;
- caseerror.timeout:
- peringatan (Lokasi gagal, meminta untuk mendapatkan batas waktu lokasi pengguna);
- merusak;
- caseerror.unknown_error:
- peringatan (lokalisasi gagal, sistem penentuan posisi gagal);
- merusak;
- }
- }
Mari kita lihat fungsi showposition (), dan panggil garis lintang dan bujur koord untuk mendapatkan garis lintang dan bujur pengguna.
- functionShowPosition (position) {
- varlat = position.coords.latitude; // latitude
- varlag = position.coords.longitude; // bujur
- alert ('lat:'+lat+', bujur:'+lag);
- }
Gunakan Baidu Maps dan Google Maps Interfaces untuk mendapatkan alamat pengguna
Seperti yang kita pahami bahwa geolokasi HTML5 dapat memperoleh garis lintang dan bujur pengguna, yang perlu kita lakukan adalah mengubah garis lintang abstrak dan bujur menjadi informasi lokasi geografis pengguna nyata yang dapat dibaca. Untungnya, Baidu Maps dan Google Maps menyediakan antarmuka dalam hal ini. Kita hanya perlu meneruskan informasi garis lintang dan bujur yang diperoleh HTML5 ke antarmuka peta, dan itu akan mengembalikan lokasi geografis pengguna, termasuk informasi provinsi, kota dan regional, dan bahkan informasi lokasi geografis terperinci seperti jalanan dan nomor rumah.
Kami pertama -tama mendefinisikan div untuk menampilkan lokasi geografis di halaman, dan mendefinisikan ID#baidu_geo dan ID#google_geo masing -masing. Kami hanya perlu memodifikasi fungsi kunci showposition (). Pertama -tama mari kita lihat interaksi antarmuka peta Baidu. Kami mengirimkan informasi garis lintang dan bujur ke antarmuka peta Baidu melalui Ajax, dan antarmuka akan mengembalikan informasi provinsi, kota, dan jalan yang sesuai. Baidu Map Interface Mengembalikan String Data JSON, dan kami dapat menampilkan informasi yang diperlukan ke Div#Baidu_Geo sesuai dengan kebutuhan kami. Perhatikan bahwa perpustakaan jQuery digunakan di sini, dan file perpustakaan jQuery perlu dimuat terlebih dahulu.
- functionShowPosition (position) {
- varlatlon = position.coords.latitude+','+position.coords.longitude;
- // Baidu
- varUrl = http: //api.map.baidu.com/geocoder/v2/? ak = c93b5178d7a8ebdb830b9b557abce78b & callback = renderreverse & location =+latlon+& output = json & pois = 0;
- $ .Ajax ({
- Jenis: Dapatkan,
- DataType: JSONP,
- URL: URL,
- beforesend: function () {
- $ (#baidu_geo) .html ('Locating ...');
- },
- Success: function (json) {
- if (json.status == 0) {
- $ (#baidu_geo) .html (json.result.formatted_address);
- }
- },
- ERROR: FUNGSI (XMLHTTPREQUEST, TextStatus, Errorthrown) {
- $ (#baidu_geo) .html (Latlon+Alamat Lokasi Gagal);
- }
- });
- });
Mari kita lihat interaksi antarmuka Google Maps. Demikian pula, kami mengirim informasi garis lintang dan bujur ke antarmuka Google Maps melalui AJAX, dan antarmuka akan mengembalikan detail provinsi, kota, dan jalan yang sesuai. Antarmuka Google Maps juga mengembalikan string data JSON. Data JSON ini lebih rinci daripada yang dikembalikan oleh antarmuka peta Baidu. Kami dapat menampilkan informasi yang diperlukan ke div#google_geo sesuai dengan kebutuhan kami.
- functionShowPosition (position) {
- varlatlon = position.coords.latitude+','+position.coords.longitude;
- varUrl = 'http: //maps.google.cn/maps/api/geocode/json? latlng ='+latlon+'& bahasa = cn';
- $ .Ajax ({
- Jenis: Dapatkan,
- URL: URL,
- beforesend: function () {
- $ (#google_geo) .html ('Locating ...');
- },
- Success: function (json) {
- if (json.status == 'ok') {
- Varresult = JSON.RESULTS;
- $ .each (hasil, fungsi (indeks, array) {
- if (index == 0) {
- $ (#google_geo) .html (array ['formated_address']);
- }
- });
- }
- },
- ERROR: FUNGSI (XMLHTTPREQUEST, TextStatus, Errorthrown) {
- $ (#google_geo) .html (Latlon+Alamat Lokasi Gagal);
- }
- });
- }
Kode di atas mengintegrasikan antarmuka peta baidu dan antarmuka peta Google ke dalam fungsi showposition () masing -masing, dan kita dapat menyebutnya sesuai dengan situasi aktual. Tentu saja, ini hanya aplikasi sederhana. Kami dapat mengembangkan banyak aplikasi kompleks berdasarkan contoh sederhana ini. Disarankan untuk menggunakan browser seluler untuk mengakses demonstrasi demo.