Làm cách nào tôi có thể có các vị trí không chính xác trên bản đồ?


7

Tôi đang sử dụng GMap để giúp người dùng tìm thấy những người khác trong khu vực của họ. Nhưng tôi muốn cho phép người dùng có một số quyền riêng tư chỉ cung cấp thành phố và mã zip của họ trên bản đồ, nhưng vẫn có địa chỉ đầy đủ trong cơ sở dữ liệu cho mục đích gửi thư. Tôi có thể làm cái này như thế nào? Vị trí của ghim trên bản đồ cũng chỉ nên dựa trên thành phố và zip, vì rõ ràng nó có thể khá chính xác về vị trí.

Ví dụ: giả sử tổng thống đăng ký trên trang web của chúng tôi. Anh ta nhập địa chỉ đầy đủ của mình, 1600 Pennsylvania Ave NW, Washington DC, DC 20500. Một quản trị viên bây giờ có thể tra cứu và gửi cho anh ta bản tin của chúng tôi.

Một người dùng khác trong khu vực DC đang tìm kiếm người để gặp gỡ. Họ nhìn và thấy một cái ghim trên bản đồ cho người dùng TIỀM NĂNG. Nhấp chuột vào mã pin và nó chỉ hiển thị một địa chỉ một phần, Washington DC, DC 20500. Và vị trí của pin không chính xác, vì vậy người dùng không thể biết từ vị trí của nó là địa chỉ chính xác của POTUS. Nhưng nó đủ để người dùng biết họ ở gần, vì vậy họ gửi tin nhắn cho người dùng để liên lạc.

Bất kỳ giải pháp cho các vị trí pin không chính xác sẽ tốt. Nếu nó được ngẫu nhiên một chút. Hoặc có lẽ tất cả các chân trong mã zip được nhóm thành một với một liên kết cho "# người dùng trong khu vực 20500" đưa người dùng vào danh sách đầy đủ.

Nếu điều này có thể được thực hiện với một cái gì đó khác với GMap, thì tốt thôi.

Câu trả lời:


6

Tôi đã có một vấn đề tương tự, và đây là cách tôi giải quyết nó:

  1. Thêm trường 'vị trí' khác cho loại nội dung của bạn; gọi nó, ví dụ: 'vị trí người dùng công cộng'.
  2. Xây dựng mô-đun tùy chỉnh của bạn và trong quá trình hook_form_alter()triển khai, ẩn trường vị trí mới, để người dùng không thể chỉnh sửa nó.
  3. Bây giờ bạn cần lấy vị trí 'không chính xác' cho vị trí đầu tiên; Tôi làm điều này với mã địa lý Google.

Tùy thuộc vào bạn để thực hiện thông qua JavaScript khi vị trí đầu tiên được đặt (cách tôi thực hiện) hoặc thực hiện định vị địa lý khi biểu mẫu được gửi đến 'thủ công' thêm vị trí 'không chính xác'.

Nếu bạn sử dụng mã địa lý trên địa chỉ một phần, Google Geocode sẽ cung cấp cho bạn tọa độ ở giữa khu vực bạn đã tìm kiếm.

Xin lưu ý rằng, để mã hóa địa lý cụ thể hơn, bạn thậm chí có thể sử dụng API Geonames .

Nếu bạn chọn cách thứ hai (tạo vị trí 'không chính xác' khi biểu mẫu được gửi), có thể điều này có thể giúp bạn về việc tạo vị trí: Tạo các nút theo chương trình trong Drupal (bao gồm các trường cck và vị trí) .

Như lưu ý phụ, tôi không sử dụng mô-đun Gmap nữa vì nhu cầu của tôi hơi phức tạp và không phù hợp với mô-đun này; nếu bạn gặp một số rắc rối, tôi khuyên bạn nên xây dựng mô-đun nhỏ của riêng mình bằng Google API v3.

Điều này sẽ cho phép bạn, ví dụ, hiển thị 'vị trí công cộng' trên bản đồ với một vòng tròn xung quanh, giống như Google Latitude.


1

Ghim đó trên bản đồ sẽ là trung tâm (thường là trung tâm hình học) của mã zip (với một vài ngoại lệ, chẳng hạn như mã zip chỉ đề cập đến một tòa nhà).

Hoặc có lẽ tất cả các chân trong mã zip được nhóm thành một với một liên kết cho "# người dùng trong khu vực 20500" đưa người dùng vào danh sách đầy đủ.

Đây là một giải pháp tốt hơn so với việc đặt tất cả 20 chân lên nhau ở trung tâm của mã zip 20500.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.