Cordova - Vị trí địa lý

Vị trí địa lý được sử dụng để nhận thông tin về kinh độ và vĩ độ của thiết bị.

Bước 1 - Cài đặt Plugin

Chúng tôi có thể cài đặt plugin này bằng cách nhập mã sau để command prompt cửa sổ.

C:\Users\username\Desktop\CordovaProject>cordova plugin add cordova-plugin-geolocation

Bước 2 - Thêm các nút

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách có được vị trí hiện tại và cách theo dõi các thay đổi. Đầu tiên chúng ta cần tạo các nút sẽ gọi các hàm này.

<button id = "getPosition">CURRENT POSITION</button>
<button id = "watchPosition">WATCH POSITION</button>

Bước 3 - Thêm người nghe sự kiện

Bây giờ chúng tôi muốn thêm trình nghe sự kiện khi thiết bị đã sẵn sàng. Chúng tôi sẽ thêm mẫu mã bên dưới đểonDeviceReady chức năng trong index.js.

document.getElementById("getPosition").addEventListener("click", getPosition);
document.getElementById("watchPosition").addEventListener("click", watchPosition);

Bước 3 - Tạo hàm

Hai hàm phải được tạo cho hai trình nghe sự kiện. Một sẽ được sử dụng để nhận vị trí hiện tại và một để theo dõi vị trí.

function getPosition() {
   var options = {
      enableHighAccuracy: true,
      maximumAge: 3600000
   }
   var watchID = navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

   function onSuccess(position) {
      alert('Latitude: '          + position.coords.latitude          + '\n' +
         'Longitude: '         + position.coords.longitude         + '\n' +
         'Altitude: '          + position.coords.altitude          + '\n' +
         'Accuracy: '          + position.coords.accuracy          + '\n' +
         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
         'Heading: '           + position.coords.heading           + '\n' +
         'Speed: '             + position.coords.speed             + '\n' +
         'Timestamp: '         + position.timestamp                + '\n');
   };

   function onError(error) {
      alert('code: '    + error.code    + '\n' + 'message: ' + error.message + '\n');
   }
}

function watchPosition() {
   var options = {
      maximumAge: 3600000,
      timeout: 3000,
      enableHighAccuracy: true,
   }
   var watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);

   function onSuccess(position) {
      alert('Latitude: '          + position.coords.latitude          + '\n' +
         'Longitude: '         + position.coords.longitude         + '\n' +
         'Altitude: '          + position.coords.altitude          + '\n' +
         'Accuracy: '          + position.coords.accuracy          + '\n' +
         'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +
         'Heading: '           + position.coords.heading           + '\n' +
         'Speed: '             + position.coords.speed             + '\n' +
         'Timestamp: '         + position.timestamp                + '\n');
   };

   function onError(error) {
      alert('code: '    + error.code    + '\n' +'message: ' + error.message + '\n');
   }
}

Trong ví dụ trên, chúng tôi đang sử dụng hai phương pháp: getCurrentPositionwatchPosition. Cả hai hàm đều sử dụng ba tham số. Khi chúng tôi nhấp vàoCURRENT POSITION , cảnh báo sẽ hiển thị các giá trị vị trí địa lý.

Nếu chúng tôi nhấp vào WATCH POSITION, cùng một cảnh báo sẽ được kích hoạt sau mỗi ba giây. Bằng cách này, chúng tôi có thể theo dõi các thay đổi chuyển động của thiết bị của người dùng.

GHI CHÚ

Plugin này đang sử dụng GPS. Đôi khi nó không thể trả về các giá trị đúng thời gian và yêu cầu sẽ trả về lỗi hết thời gian chờ. Đây là lý do tại sao chúng tôi chỉ địnhenableHighAccuracy: truemaximumAge: 3600000.Điều này có nghĩa là nếu một yêu cầu không được hoàn thành đúng hạn, chúng tôi sẽ sử dụng giá trị cuối cùng đã biết để thay thế. Trong ví dụ của chúng tôi, chúng tôi đang đặt MaximumAge thành 3600000 mili giây.