HTML5 GeoLocation có xu hướng là nhiều chính xác hơn GeoLocation dựa trên IP.
GeoLocation dựa trên IP phụ thuộc vào cơ sở dữ liệu được liên kết với ISP để tìm ra vị trí của bạn. Điều này không hoạt động tốt khi dịch vụ ISP của bạn có diện tích rất lớn và cung cấp địa chỉ IP động. Địa chỉ trong một thị trấn hiện nay có thể là 100 dặm vào ngày mai. Hơn nữa, những cơ sở dữ liệu thường không được cập nhật thường xuyên. Nếu ISP của bạn bán các khối IP hoặc chuyển chúng sang một thị trấn mới, cơ sở dữ liệu có thể vẫn không chính xác nghĩ rằng bạn đang ở một nơi khác.
Vị trí HTML5 sử dụng các dịch vụ do trình duyệt của bạn cung cấp để tìm ra vị trí của bạn. Nếu máy tính của bạn có tích hợp GPS (chẳng hạn như trên nhiều thiết bị di động và một số máy tính xách tay), máy tính sẽ biết chính xác vị trí của bạn. Điều này làm cho nó hữu ích hơn nhiều cho các ứng dụng web có thành phần điều hướng hoặc vị trí. Đối với các thiết bị không có GPS, nó thường có thể cung cấp một xấp xỉ rất tốt dựa trên các tín hiệu không dây đã biết gần đó và các yếu tố khác, chẳng hạn như truy tìm bộ định tuyến mà máy tính của bạn đi qua khi kết nối với internet. Việc triển khai chính xác phụ thuộc vào máy tính, phần cứng nào có sẵn và cách trình duyệt chọn làm việc.
Ví dụ, khi tôi kiểm tra một dịch vụ vị trí dựa trên IP, nó nói rằng tôi đang ở trong một thành phố lớn đặc biệt trong khu vực nói chung tương tự mà tôi đang sống, nhưng nó thực sự là khoảng 50 dặm. Khi tôi sử dụng dịch vụ dựa trên vị trí HTML5 để tìm ra vị trí của mình, nó chỉ tắt khoảng 20 khối.
Nếu bạn đang phát triển một ứng dụng web cần dữ liệu vị trí, hãy thử bằng cách sử dụng HTML5 GeoLocation nếu có thể. Thiết lập dự phòng, để nếu vị trí HTML5 không thành công, bạn có thể sử dụng giải pháp GeoIP thay thế. Bằng cách này, bạn sẽ nhận được độ chính xác tối ưu trên các trình duyệt và thiết bị được hỗ trợ, nhưng vẫn sẽ có giải pháp tại chỗ khi dữ liệu HTML5 không có sẵn.
Nếu bạn sử dụng geolocation-javascript project from Google Code, bạn có thể sử dụng đoạn mã sau:
//determine if device has geo location capabilities
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(success_callback,error_callback);
}
else{
// use an AJAX request to look up the location based on IP address
}
Bạn không thể có được một vị trí _accurate_ sử dụng địa chỉ IP. Điều tốt nhất có thể làm là cung cấp vị trí của ISP cung cấp địa chỉ IP. Tôi từng làm việc cho một công ty Hoa Kỳ có địa chỉ IP từ Anh ... –
@John Saunders - để công bằng, đó là một thất bại của cơ sở dữ liệu vị trí IP để luôn cập nhật, thay vì địa chỉ IP chính nó đang ở sai vị trí. – Spudley
Tại sao? "Cơ sở dữ liệu vị trí IP" chưa bao giờ được, và không bao giờ có thể là một cơ sở dữ liệu về vị trí của các máy tính sử dụng một địa chỉ IP cụ thể. Nó không bao giờ có thể là bất cứ điều gì nhiều hơn một cơ sở dữ liệu của các địa điểm của các nhà cung cấp dịch vụ Internet đã đưa ra các địa chỉ IP. Tốt nhất, nó có thể giữ vị trí nơi ISP _though_ địa chỉ IP sẽ được sử dụng. Và trong trường hợp của tôi, định tuyến đã thực sự được thực hiện ở London, vì vậy tất cả các gói cho Hoa Kỳ đã đi qua Vương quốc Anh! –