2010-01-13 19 views
8

Đang cố gắng sử dụng google.loader.ClientLocation cùng với bản đồ api để lấy vị trí của khách truy cập và căn giữa bản đồ trên đó. Sau đây là làm việc tốt cho tôi (trên Safari, Firefox và Chrome), nhưng một người bạn tôi đã kiểm tra nó (trong Safari và Firefox) chỉ nhìn thấy một hộp màu trắng với logo của Google.Nhận vị trí của người dùng bằng google.loader.ClientLocation làm việc cho tôi nhưng không phải người khác

<script type="text/javascript" src="http://www.google.com/jsapi?key=MykeyHere"></script> 

    <script type="text/javascript"> 
    google.load("maps", "2"); 
    </script> 

    <script type="text/javascript"> 

     function initialize() { 
     if (GBrowserIsCompatible()) { 
      var map = new GMap2(document.getElementById("local_map")); 
    map.setMapType(G_PHYSICAL_MAP); 
    map.setCenter(new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude), 15); 
      // map.setCenter(new GLatLng(54.5975, -5.920278), 15); 
      map.setUIToDefault(); 

     } 

     </script> 

Bất kỳ ý tưởng nào có thể xảy ra sai? Địa điểm tại http://www.chris-armstrong.com/ticktalk (bản đồ nằm gần phía dưới)

Trả lời

14

Google ClientLocation sử dụng vị trí địa lý IP. Có một số nhà cung cấp định vị địa chỉ IP ngoài kia (các câu hỏi liên quan trong thanh bên bên phải sẽ cung cấp cho bạn một số trong số đó) và chúng cung cấp kết quả khác nhau cho những người dùng khác nhau. Google ClientLocation sẽ không thể định vị mọi người và sẽ không luôn cung cấp câu trả lời chính xác hoặc chính xác như một số đối thủ cạnh tranh.

Trên my test page, ví dụ: tôi sử dụng Google ClientLocation và IPInfoDB và Google ClientLocation không tìm thấy tôi ở nhà ngay bây giờ, trong khi IPInfoDB nghĩ tôi đang ở Sunnyvale thay vì Berkeley. Bạn có thể thấy rằng một nhà cung cấp tốt hơn những người khác (đặc biệt nếu bạn trả tiền cho cơ sở dữ liệu của nó), nhưng tôi nghi ngờ rằng phương pháp mạnh mẽ nhất, nếu bạn thực sự cần nó, hãy sử dụng một số và hy vọng rằng ít nhất một người sẽ có kết quả . Bạn nên biết trước rằng định vị địa lý IP sẽ không phải lúc nào cũng hoạt động cho tất cả người dùng (ví dụ như những proxy ẩn danh ẩn danh sẽ không bao giờ được định vị theo cách này).

Ngoài ra, nếu bạn muốn có vị trí chính xác hơn, bạn có thể sử dụng API Javascript để yêu cầu trình duyệt tìm vị trí chính xác của người dùng. Trên các trình duyệt được hỗ trợ, người dùng sẽ nhận được một cửa sổ bật lên yêu cầu sự cho phép của họ và, nếu được, trình duyệt sẽ sử dụng GPS (ví dụ như Mobile Safari trên iPhone) hoặc triangulation WiFi (Firefox 3.5+) để xác định vĩ độ và kinh độ . Bạn có thể xem cách hoạt động của tính năng này trên my test page và so sánh nó với định vị địa lý IP. Không phải tất cả các trình duyệt đều hỗ trợ W3C Geolocation API nhưng số lượng ngày càng tăng.

+0

Cảm ơn, về cơ bản, đó không phải là khoa học chính xác. Địa chỉ IP là cách duy nhất để nhận vị trí không có chức năng GPS? –

+0

@ Chris, chính xác, nó không chính xác. Bạn có thể sử dụng API định vị địa lý W3C Javascript để có được vị trí chính xác hơn từ trình duyệt (có thể sử dụng GPS hoặc WiFi triangulation hoặc một số phương pháp khác, tùy thuộc vào trình duyệt và máy tính). Tôi đã thêm một số liên kết vào câu trả lời của tôi để cung cấp thêm ngữ cảnh. – npdoty

+0

Tôi nhận được 'Thực ra, tôi không thể đoán vị trí của bạn theo cách này'. khi truy cập trang thử nghiệm của bạn. –

0

Tôi biết đã quá muộn. Nhưng tôi nghĩ Liên kết này có thể giúp ai đó. http://npdoty.name/location/

+12

Đây là những gì sẽ xảy ra khi bạn đăng câu trả lời ur mà không đọc những câu trả lời hiện có. – Sparky

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