2010-08-02 5 views
14

Tôi đang làm việc trên một bảng công việc trong Codeigniter PHP + jQuery nơi các nhà tuyển dụng nhập vị trí của họ và chúng tôi sử dụng API Google Maps để vẽ nó. Trong khi điều này đã có kết quả khả năng sử dụng tuyệt vời, vấn đề là khi chúng tôi cố gắng để hiển thị các địa điểm này để tìm việc họ là lộn xộn và khó có thể phân biệt được bằng mắt (họ đọc như thế này: "02.905, 2 dặm", "171 John St., 4 dặm", 'Providence, RI, 10 dặm'.Chuyển đổi vĩ độ/kinh độ thành tên thành phố? (reverse geolocating)

tôi muốn để có thể đảo ngược định vị địa lý từ kinh độ/vĩ độ đến một mức độ thiết lập (lý tưởng, tên thành phố) để trong các kết quả tìm kiếm của tôi có thể có các địa điểm được liệt kê như sau:. "Providence, RI, 10 dặm", "Providence, RI, 5 dặm", "Cranston, RI, 16 dặm" ​​

có cách nào để đảo ngược mã địa lý cho thành phố Tôi thấy nhiều ví dụ về cách đảo ngược mã địa lý đến vị trí địa chỉ gần nhất, nhưng không có cách nào để kiểm soát cấp độ.

Hy vọng điều đó rõ ràng! Hãy bình luận với bất kỳ câu hỏi nào bạn cần làm rõ.

Trả lời

12

Bộ mã hóa địa lý của Google, hỗ trợ reverse geocoding trả về address_components. Bạn chỉ cần rút ra các thành phần của địa chỉ được gắn thẻ với localitypolitical nếu bạn chỉ muốn tên thành phố. Nếu bạn muốn các quốc gia cũng chúng được gắn thẻ với administrative_area_level_1

+11

Chăm sóc Điều khoản dịch vụ API Google Maps: http://code.google.com/apis/maps/documentation/geocoding/#Limits "Lưu ý: Chỉ có thể sử dụng API mã hóa địa lý cùng với bản đồ của Google; kết quả mã hóa địa lý mà không hiển thị chúng trên bản đồ bị cấm. Để biết chi tiết đầy đủ về cách sử dụng được phép, hãy tham khảo Hạn chế cấp phép bản quyền dịch vụ API Maps. " – sabbour

+0

Ahhh cảm ơn vì điều đó! – Walker

2

Bạn không thể làm điều đó làm địa chỉ đầy đủ, sau đó thả phố và số?

Tôi muốn nói sẽ có giá trị hơn khi sử dụng địa chỉ đầy đủ, để có khoảng cách chính xác hơn (ngay cả khi bạn chỉ hiển thị thành phố, tiểu bang).

CHỈNH SỬA: Nếu bạn thực hiện theo cách đó, ít nhất nó phải được trả lại ở dạng chuẩn, sau đó bạn có thể dễ dàng kiểm tra lại dữ liệu bạn muốn.

+0

Rất thích, nhưng trong khả năng sử dụng của chúng tôi kiểm tra rất nhiều người sử dụng lao nhỏ được thoải mái đăng địa chỉ cụ thể . – Walker

+0

Vì vậy, có các nhà tuyển dụng nhập một chuỗi địa điểm "Vùng ngoại ô của Providence" thay vì một cặp lat/lon. – tpdi

+0

Chúng tôi thực sự chuyển đổi nó thành lat/long để lưu trữ và vẽ nó trên bản đồ (đối với trang kết quả/tìm kiếm dựa trên radial). Chủ sử dụng nhập chuỗi ký tự miễn phí trên trang đăng việc làm – Walker

38

NGUỒN miễn phí (ví dụ Creative Commons)

GeoNames

Nếu bạn đang tìm kiếm miễn phí (như tự do) nguồn khác nhau, bạn có thể sử dụng API Geonames findNearbyPlaceName.

Ví dụ lợi nhuận sau gần placeName:

http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo

Xem thêm thông tin có sẵn ở đây

http://www.geonames.org/export/web-services.html#findNearbyPlaceName

Freebase

Thay vì điểm duy nhất phải mất hộp giáp . mẫu gọi:

http://api.freebase.com/api/service/geosearch?location=[30.2,50.4,30.6,50.8]&location_type=/location/citytown&inside=true&indent=1

Geocoder.ca

Xếp mã hóa địa lý cho các địa chỉ khu vực Bắc Mỹ.

Thông tin: http://geocoder.ca/

gọi mẫu: http://geocoder.ca/?latt=40.70771000786733&longt=-74.0109443664550&reverse=1&allna=1&geoit=xml&corner=1&jsonp=1&callback=test

Map Quest API

Sử dụng mở đường Map nominatim dịch vụ:

http://open.mapquestapi.com/nominatim/v1/search?q=50.4,30.4&format=json

KHÔNG MIỄN PHÍ NGUỒN

Yahoo PlaceFinder

Documentation http://developer.yahoo.com/geo/placefinder/

gọi mẫu:

http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=[yourappidhere]

Google Maps API

Document ation:

http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding

+1

Cảm ơn thông tin. Câu trả lời rất nhiều thông tin. – ThinkingMonkey

0

dịch vụ mã hóa địa lý ngược (như Google, Yahoo, và GeoNames) sẽ làm việc tốt cho mục đích này với một vài hãy cẩn thận:

  • Mặc dù tôi không thể nói chắc chắn như thế nào các dịch vụ thương mại làm việc, lần cuối cùng tôi kiểm tra GeoNames sử dụng một điểm gần nhất của chiến lược quan tâm để xác định thành phố. Điều này có thể là vấn đề nếu điểm truy vấn của bạn có phần gần biên giới giữa hai thành phố và mục nhập gần nhất trong cơ sở dữ liệu GeoNames nằm ở phía bên kia của đường viền đó. Điều này thực sự xảy ra một chút công bằng trong kinh nghiệm của tôi, vì vậy đây không chỉ là một số kỹ thuật.
  • Ngoài ra, nếu bạn quan tâm đến trải nghiệm của người dùng, bất kỳ giải pháp API web nào đều bổ sung độ trễ và giảm độ tin cậy.

Tôi chạy một trang web cung cấp một số API web địa lý thương mại và bán các thư viện Java mà chúng tôi đã tạo để trả lại các API đó. Một trong số họ (chỉ có phạm vi bảo hiểm của Hoa Kỳ) sử dụng bản đồ đa giác thích hợp của các thành phố và thị trấn ở Hoa Kỳ để trả lại kết quả có chứa điểm truy vấn của bạn. Đó là chính xác và nhanh chóng, vì vậy nếu đây là một nhiệm vụ thành phần quan trọng trong hệ thống của bạn, tôi khuyên bạn nên xem tại trang web của chúng tôi:

http://askgeo.com

Các trang đó là cụ thể cho nhìn lên thành phố từ lat/lon là:

http://askgeo.com/database/UsPlace2010

0

Tôi đang tìm kiếm API để chuyển đổi lat/long thành city. Có vẻ như đây là câu hỏi ban đầu về chủ đề này.

Tôi thấy dữ liệu "http://download.geonames.org/export/dump/" được chia sẻ trên một luồng ngăn xếp ngăn xếp khác Given the lat/long coordinates, how can we find out the city/country? và triển khai Dịch vụ web của riêng tôi.

Bạn có thể xem nó đang chạy tại http://scatter-otl.rhcloud.com/location?lat=36&long=-78.9 Chỉ cần thay đổi vĩ độ và kinh độ cho vị trí của bạn.

Nó được triển khai trên OpenShift (Nền tảng RedHat). Cuộc gọi đầu tiên sau một thời gian nhàn rỗi dài có thể mất đôi khi, nhưng thường hiệu suất là thỏa đáng. Vui lòng sử dụng dịch vụ này theo ý muốn của bạn ...

Ngoài ra, bạn có thể tìm thấy nguồn dự án tại https://github.com/turgos/Location.

0

Vị trí địa lý Html5 yêu cầu sự cho phép của người dùng. Nếu bạn không muốn hành vi này, bạn có thể đi cho một nhà cung cấp bên ngoài như https://geoip-db.com. Họ cung cấp dịch vụ định vị địa lý miễn phí dựa trên địa chỉ ip.

Hãy thử ví dụ này:

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Geo City Locator</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
</head> 
<body > 
    <div>Country: <span id="country"></span></div> 
    <div>State: <span id="state"></spa></div> 
    <div>City: <span id="city"></span></div> 
    <div>Latitude: <span id="latitude"></span></div> 
    <div>Longitude: <span id="longitude"></span></div> 
    <div>IP: <span id="ip"></span></div>  
    <script> 
     $.getJSON('https://geoip-db.com/json/geoip.php?jsonp=?') 
     .done (function(location) { 
      $('#country').html(location.country_name); 
      $('#state').html(location.state); 
      $('#city').html(location.city); 
      $('#latitude').html(location.latitude); 
      $('#longitude').html(location.longitude); 
      $('#ip').html(location.IPv4);    
     }); 
    </script> 
</body> 
</html>