2009-02-27 28 views
11

Tôi hiện đang làm việc trên trang web danh sách chương trình. Tôi sẽ hiển thị thông tin hiển thị theo vị trí cho người dùng được sắp xếp theo nhiều cách khác nhau.Làm cách nào để tự động tìm vị trí của người dùng?

Tôi biết Tôi có thể hỏi người dùng nơi họ được đặt khi họ đăng nhập lần đầu tiên vào trang web, nhưng tôi nhận thấy rằng nhiều trang web có khả năng này được tích hợp sẵn để tự động phát hiện vị trí (Ví dụ: xem Last.fm "Sự kiện: Danh sách hòa nhạc trong khu vực của bạn ").

Làm cách nào để thực hiện việc này? Tôi hiện đang xây dựng trang web của tôi trong Ruby on Rails.

+0

Đừng quên đưa ra một số câu trả lời bạn thích và có thể đánh dấu câu trả lời được chấp nhận. Mọi người luôn có thể sử dụng sự khuyến khích. – GEOCHET

+0

tôi đã bỏ phiếu cho ba câu trả lời. Nhưng ai đó đã từ chối bỏ phiếu mọi thứ. – CodingWithoutComments

+0

@Coding: Thú vị. Tiếp tục sau đó, câu hỏi hay. – GEOCHET

Trả lời

1

Chúng thường sử dụng độ phân giải IP theo bảng IP. ip2nation có thể đưa ra một số ý tưởng

9

Dưới đây là một liên kết đến tài liệu trên Google Maps API liên quan:

http://code.google.com/apis/ajax/documentation/#ClientLocation

Nó cho thấy một ví dụ về cách sử dụng nó:

/** 
* Set the currentState_ and currentCountry_ properties based on the client's 
* current location (when available and in the US), or to the defaults. 
*/ 
InTheNews.prototype.setDefaultLocation_ = function() { 
    this.currentState_ = this.options_.startingState; 
    if (google.loader.ClientLocation && 
     google.loader.ClientLocation.address.country_code == "US" && 
     google.loader.ClientLocation.address.region) { 

    // geo locate was successful and user is in the United States. range 
    // check the region so that we can safely use it when selecting a 
    // state level polygon overlay 
    var state = google.loader.ClientLocation.address.region.toUpperCase(); 
    if (InTheNews.stateNames[state]) { 
     this.currentState_ = state; 
    } 
    } 
    this.currentCountry_ = "US"; 
} 

Và cho bạn biết những gì bạn sẽ nhận được từ nó:

Khi dân cư, đối tượng google.loader.ClientLocation là dân cư với các thuộc tính granularity metro cấp sau:

  • ClientLocation.latitude - cung cấp các vĩ độ phân giải thấp kết hợp với địa chỉ IP của client

  • ClientLocation.longitude - cung cấp cho kinh độ độ phân giải thấp được liên kết với địa chỉ IP của khách hàng

  • ClientLocation.address.city - cung cấp tên thứ e thành phố kết hợp với địa chỉ IP của client

  • ClientLocation.address.country - cung cấp tên của đất nước gắn liền với địa chỉ IP của client

  • ClientLocation.address.country_code - cung cấp tên của mã quốc gia ISO 3166-1 liên quan với địa chỉ IP của client

  • ClientLocation.address.region - cung cấp tên miền quốc gia cụ thể liên quan đến địa chỉ IP của client

+0

điều này thật tuyệt vời. – CodingWithoutComments

+0

Tôi là người mới đối với cộng đồng, vì vậy điều này có thể là cơ sở, nhưng việc bao gồm một đoạn trích từ trang cần thêm vào câu trả lời như thế nào? Anh ấy vẫn sẽ phải bấm vào liên kết để sử dụng API, phải không? – runako

+1

@runako: Ý tưởng cho SO là một wiki đầy đủ thông tin. Vì vậy, có liên kết là một khởi đầu tuyệt vời, nhưng cho một bó nhiều thông tin hơn để cung cấp cho ai đó một khởi đầu tốt là tốt hơn. – GEOCHET

0

Có một cách mới, trên thực tế đó là cách tốt hơn để tìm vị trí địa lý, vì trình duyệt sẽ hỗ trợ định vị API W3C cho vị trí địa lý ... Bạn nên kiểm tra GeoMereLaal.

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