2010-01-18 76 views
5

Có ai có thể nhận vị trí địa lý dựa trên IP của một người để làm việc sử dụng JavaScript API Google Maps v3 không?API Google Maps v3 - Vị trí địa lý dựa trên IP

Dường như với tôi rằng ngay cả ví dụ do Google cung cấp cũng không hoạt động.

http://gmaps-samples-v3.googlecode.com/svn/trunk/commonloader/clientlocation.html

Câu hỏi:

  1. Liệu này làm việc ví dụ cho bất cứ ai?

  2. Làm cách nào để nhận vị trí địa lý dựa trên IP của một người để hoạt động bằng API Google Maps v3?

Trả lời

5

Q1: Nó hoạt động từ đây, và có lẽ từ nhiều địa điểm khác. Tuy nhiên lưu ý rằng vị trí địa lý từ địa chỉ IP không phải là một khoa học đáng tin cậy. Bạn sẽ nhận được vị trí của ISP của bạn, có thể khá xa, và ngoài ra cơ sở dữ liệu IP-to-location không phải luôn được cập nhật với những thay đổi mới nhất, vì vậy bạn có thể không có bất kỳ dữ liệu nào cho một IP cụ thể địa chỉ - đó có thể là những gì đang xảy ra trong trường hợp của bạn.

MaxMind, trong đó cung cấp một phổ biến IP-to-vị trí cơ sở dữ liệu công bố một số liệu thống kê về cơ sở dữ liệu của nó:

Q2: Cách duy nhất để có được định vị từ một IP địa chỉ thông qua API Google Maps v3 là sử dụng cùng một phương pháp được sử dụng trong example you provided. Tuy nhiên, nếu bạn thấy rằng bất kỳ cơ sở dữ liệu định vị địa lý nào khác, như MaxMind GeoLite City, chính xác hơn cho quốc gia của bạn, bạn có thể muốn định vị địa lý từ chính Địa chỉ IP, thay vì ủy quyền nó cho Google Maps.

+2

cũng hoạt động ở đây. có lẽ vị trí (OP) của bạn không có trong cơ sở dữ liệu. – dusoft

+1

Làm việc tốt cho tôi (Cấp thành phố). –

0

API Google Maps web dường như không cung cấp dịch vụ định vị địa chỉ IP (được cung cấp example đề xuất sử dụng tiêu chuẩn Định vị địa lý W3C, thường yêu cầu hành động từ người dùng).

Tuy nhiên! Google Maps Geolocation API của Google, thường được sử dụng trên ứng dụng khách di động, có thể sử dụng từ web và không trả về vĩ độ & kinh độ dựa trên địa chỉ IP của khách hàng yêu cầu.

Dưới đây là một jQuery ví dụ nhanh đó chứng tỏ việc sử dụng nó:

$.ajax({ 
    url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR-API-KEY', 
    data: JSON.stringify({ "considerIp": "true" }), 
    type: 'POST', 
    contentType: 'application/json', 
    success: function(data) { 
     if(data.location) { 
     alert(data.location.lat + ', ' + data.location.lng); 
     } else { 
     alert('not found'); 
     } 
    } 
    }); 

Đây là curl tương đương:

curl -H "Content-Type: application/json" -X POST -d '{"considerIp": true}' https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR-API-KEY 

Đừng quên để trao đổi trong một khóa API thực sự trong các ví dụ trên AND để enable the Geolocation API cho dự án Google API của bạn.

+0

Bất kỳ cơ hội nào bạn có thể cung cấp một ví dụ html? –

+1

@RoccoTheTaco: đây là [ví dụ] (http://jsbin.com/fiberadufu/1/edit?html, console, output) sử dụng cùng mã như trên. Bạn sẽ cần đặt biến 'GOOGLE_API_KEY', nếu không điều này sẽ không hoạt động (hãy chuyển đến Bảng điều khiển API của Google, tạo dự án mới, bật API vị trí địa lý và nhận khóa API). –

+0

Kiểm tra [ví dụ] (https://developers.google.com/maps/documentation/javascript/geolocation) trong trang web Google Maps. – Jaime

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