2009-11-26 32 views
17

Có cách nào dễ dàng để ghi đè hành vi mặc định của geolocation api và chỉ mã cứng vị trí hiện tại của bạn không?Nhà cung cấp vị trí địa lý cho Firefox cho phép nhập thủ công

Tôi nghĩ rằng đây sẽ là hữu ích để thử nghiệm và vì lý do riêng tư (cung cấp dữ liệu vị trí giả)

tôi nghĩ là có một add on cho điều này nhưng tôi dường như không thể tìm thấy một. Chỉ có tùy chọn ngay bây giờ dường như đang thay đổi about: config geo.wifi.url thành một số dịch vụ web thay thế, mà tôi xem xét quá phức tạp.

Bất kỳ ý tưởng nào?

Cảm ơn

lý tưởng Kịch bản

Ai đó thực hiện một add-on, nơi một bản đồ google xuất hiện và tôi có thể chọn một vị trí mặc định mới.

+0

Kịch bản lý tưởng như vậy đã được thực hiện - có tiện ích mở rộng vị trí địa lý bằng tay chrome trên cửa hàng Chrome trực tuyến ngay bây giờ. – ronme

Trả lời

11

Các geo.wifi.uri không cần phải là một webservice. Bạn cũng có thể đặt nó vào một uri địa phương với file: // ...

Các tập tin phải là một tệp json với nội dung như thế này:

{"location": { 
       "latitude": 48.777025000000002, 
       "longitude": 9.1713909999999998, 
       "accuracy": 10.0}} 

Cập nhật: Đối với Firefox 9+, định dạng đã thay đổi:

{ 
    "status": "OK", 
    "accuracy": 10.0, 
    "location": {"lat": 48.777, "lng": 9.171} 
} 

Hoặc bạn có thể kết hợp chúng để hỗ trợ cả hai:

{ 
    "status": "OK", 
    "accuracy": 10.0, 
    "location": { 
     "lat": 48.777, 
     "lng": 9.171, 
     "latitude": 48.777, 
     "longitude": 9.171, 
     "accuracy": 10.0 
    } 
} 

Cập nhật: có vẻ như đặt thủ công tùy chọn này bị nhà cung cấp dịch vụ giả định dịch vụ Google chặn. Xem Bug 716453 Cập nhật 2: geo.wifi.uri không geo.wifi.url

0

Hmmm, bạn không thể giả mạo trực tiếp navigator.geolocation - có lẽ bạn có thể cấu trúc lại mã của bạn sử dụng mã đó để sử dụng đối tượng khác - giả sử customGeoLocation.

Trong quá trình sản xuất, bạn chỉ có thể đặt customGeoLocation thành navigator.geolocation và trong các thử nghiệm, hãy sử dụng tính năng thực hiện mô phỏng bất kỳ chức năng nào bạn sử dụng.

EDIT: Hóa ra bạn có thể thay thế các hàm trên đối tượng navigator.geolocation nhưng vẫn vô dụng nếu bạn đang sử dụng thư viện giả (như JsMock) cần tạo đối tượng giả. Vì vậy, bạn sẽ không thể thay thế navigator.geolocation bằng một mô hình.

Bạn có thể làm chế giễu mình trong thời trang này:

var getCurrentPositionCalled = false; 
navigator.geolocation.getCurrentPosition = function() { 
    getCurrentPositionCalled = true; 
}; 

//Your app code here 
//... 
assert(getCurrentPositionCalled); 
5

Geolocater là một thử nghiệm add-on cho phép bạn chỉnh sửa định vị của bạn.

+0

Không còn thử nghiệm nữa. – PhoneixS

0

Tôi đã kết nối Google Latitude với vị trí địa lý của Firefox. Điều này cho phép bạn cập nhật vị trí của mình theo cách thủ công trong Google Latitude chỉ với một lần nhấp chuột, thay vì tự tìm kiếm kinh độ và vĩ độ của bạn và nhập nó vào một tệp cục bộ. Bài viết của tôi về chủ đề là Make Firefox Take Geolocation From Google Latitude.

Giải pháp yêu cầu một lượng nhỏ mã hóa phía máy chủ (tôi cung cấp mã nguồn trong bài viết), nhưng hiện tại tôi đang chạy mã này dưới dạng dịch vụ trực tiếp miễn phí mà bạn có thể sử dụng.

Chúc mừng, MetaEd

13

Cách đơn giản nhất là để điều hướng đến about:config và sau đó trong hộp lọc nhập geo.wifi.uri, kích đúp vào dòng cấu hình duy nhất xuất hiện, và nhập giá trị dưới đây sau khi bạn thay thế xxxyyy với tọa độ bạn nhận được từ một dịch vụ như http://www.getlatlon.com/:

data:application/json,{"location":{"latitude":xxx,"longitude":yyy,"accuracy":10}}

thủ thuật này không đòi hỏi bất kỳ tiện ích hoặc các tập tin local/lưu trữ. Đảm bảo giá trị không có bất kỳ dấu cách nào và nằm trên một dòng!

+2

Để tham khảo, giá trị mặc định của trường này là 'geoloc: // www.google.com/loc/json' –

+0

Trong Firefox 10, điều này dường như không hoạt động nữa. – skolima

+0

trong Firefox 10+ sử dụng 'dữ liệu: ứng dụng/json, {"vị trí": {"lat": xxx, "lng": yyy, "chính xác": 10}} ' –

1

Trong Chrome, bạn có thể sử dụng tiện ích mở rộng chrome Manual Geolocation. Nó sẽ cho phép bạn đồ họa chọn vị trí thủ công của bạn.

0

Tôi đã tạo một ứng dụng web đơn giản phục vụ như một điểm cuối định vị địa lý, bạn có thể trỏ geo.wifi.uri của trình duyệt đến. Nó tương thích với đặc tả API của Google. Để sử dụng, chỉ cần nhập thông tin sau, thay thế [vĩ độ] và [kinh độ] bằng các giá trị mong muốn:

http://geolocation-mocker.phitherek.me/geolocate/[latitude]/[longitude] 

và nó sẽ hoạt động. Để kiểm tra xem các dịch vụ đang gia tăng, điều hướng đến

http://geolocation-mocker.phitherek.me

và kiểm tra xem màn hình trang HTML một cách chính xác. Bạn có thể tìm ra mã nguồn cho ứng dụng đơn giản này tại

https://github.com/Phitherek/geolocation-mocker

Tôi hy vọng công cụ này sẽ chứng minh là hữu ích.

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