2011-11-23 27 views
9

Tôi đang cố gắng sử dụng tham số maximumAge trong vị trí địa lý HTML. Cách hoạt động trong Chrome dường như không khớp với thông số kỹ thuật.Vị trí địa lý của Chrome dường như bỏ qua tham số maximumAge

Tôi đã read through the geolocation API spec và từ những gì tôi có thể hiểu, nếu bạn đặt maximumAge thành 0, bạn luôn phải có vị trí mới.

Các maximumAge thuộc tính chỉ ra rằng ứng dụng sẵn sàng chấp nhận một vị trí lưu trữ có tuổi là không lớn hơn so với quy định thời gian trong mili giây. Nếu maximumAge được đặt thành 0, việc thực hiện phải ngay lập tức cố gắng giành được một đối tượng vị trí mới. Việc đặt mức tối đa là maximumAge to Infinity phải xác định việc triển khai để trả lại vị trí được lưu trữ bất kể độ tuổi của nó. Nếu triển khai không có vị trí được lưu trong bộ nhớ cache có độ tuổi không lớn hơn maximumAge được chỉ định, thì nó phải có đối tượng vị trí mới. Trong trường hợp của một watchPosition(), maxAge đề cập đến vị trí đầu tiên đối tượng được trả về bởi việc triển khai.

Tuy nhiên, đây là mã của tôi:

function gpsSuccess(pos) { 
    var positionDate = new Date(pos.timestamp); 
    var currentDate = new Date(); 
    console.log(positionDate.toLocaleString(), currentDate.toLocaleString()); 
} 
watchId = navigator.geolocation.watchPosition(gpsSuccess, 
    gpsFail, { 
     enableHighAccuracy: true, 
     maximumAge: 0, 
     timeout: 27000 
}); 

Và tôi nhìn thấy những điều sau đây:

Wed Nov 23 2011 10:25:43 GMT+0000 (GMT), Wed Nov 23 2011 10:52:16 GMT+0000 (GMT) 

Vì vậy, đó là một nửa khác biệt một giờ giữa vị trí đạt được và thời gian hiện tại.

Tôi nghĩ rằng nó có thể chỉ là sự khác biệt giữa thời gian vệ tinh và giờ địa phương, nhưng tôi đã nhấn làm mới liên tục và vị trí không thay đổi, mặc dù currentDate là.

Tại sao cùng một vị trí được lưu trong bộ nhớ cache được sử dụng lại, mặc dù maxAge được đặt thành 0?

Đây là trong Chrome, BTW.

+0

Tôi cũng đã nhận thấy hành vi tương tự trên Safari-mobile. Rất bực bội. Tôi ước tôi biết cách bắt buộc tìm kiếm địa lý mới khi tôi cần. Tôi nghĩ, như bạn đã làm, rằng thiết lập maximumAge bằng không sẽ làm điều này (như spec giải thích). Đoán không ... – robmclarty

+0

Có vẻ như có thể chỉ đơn giản là không kiểm soát được điều này: http://stackoverflow.com/questions/14814256/javascript-geolocation-caching – robmclarty

+0

Tùy thuộc vào trường hợp sử dụng của bạn vấn đề này có thể rất khó chịu. Tôi nhận được xung quanh điều này bằng cách thiết lập một lá cờ và bỏ qua các đối tượng vị trí đầu tiên trở lại trong gọi lại thành công. – bardu

Trả lời

0

Điều này là không thể. Điều tương tự cũng xảy ra với một số thẻ html5 như bài phát biểu của webkit, mà bạn không thể kích hoạt thông qua mã. Bạn không có quyền kiểm soát nhiều thứ, xin lỗi.

Các vấn đề liên quan