2010-03-13 44 views
9

Tôi đang tìm một api định vị tốt để sử dụng từ bash. Tôi muốn cuộc gọi này trở lại ở mức tối thiểu tên của thành phố tôi đang ở và tiểu bang.Cách nhận vị trí địa lý của tôi trong bash

Tôi tưởng tượng rằng phải có một số trang web tôi có thể cuộn tròn hoặc một số ngôn ngữ kịch bản có gói hoạt động. Máy không có GPS, nhưng nó sử dụng internet không dây hầu hết thời gian nếu cần.

Trả lời

8

Gần đây, tôi đã xem xét vấn đề này và tìm thấy whereami, một tập lệnh định vị địa lý cho Mac OS X Snow Leopard, lợi dụng Vị trí lõi. Điều này sẽ có xu hướng chính xác hơn nhiều so với định vị địa lý IP và nó hoạt động tốt trong các thử nghiệm của tôi.

+0

Đó chỉ là gợi cảm. Cảm ơn các liên kết! – icco

+1

Dường như không xây dựng thêm nữa theo hướng dẫn của họ. – sje397

+0

Tương tự ở đây, có một yêu cầu kéo thêm hỗ trợ cho Swift 2, tiếc là Swift 3 là mặc định trong Xcode 8. –

0

Internet không dây có nghĩa là WiFi, CDMA2k, UMTS, EDGE ...? Và người vận chuyển của bạn? Không phải là nó quan trọng.

Thực sự. Tôi sẽ bắt đầu đầu tư vào một dongle GPS.

+0

chỉ tốt ol 802.11g. Tôi không nên cần một gps nếu trình duyệt của tôi có thể nhận được vị trí của tôi mà không có một. – icco

+0

Tôi cho rằng điều này là dành cho chính bạn - một máy tính di động? :) Bạn có thể nhận được * a * vị trí không có GPS, không bao giờ được bảo đảm là đúng (dịch vụ GeoIP có thể đặt bạn ở trạng thái hoàn toàn khác chỉ vì ISP được đăng ký ở đó trong 'whois'.) – vladr

1

Nứt kết quả lần truy cập đầu tiên của Google cho "geoip" dường như hoạt động dễ dàng đủ.

 
$ curl http://www.maxmind.com/app/locate_my_ip | 
> awk '/<table>/{RS=RS RS}/tblProduct1/' 

tôi đã không kiểm tra EULA của họ để xem nếu sử dụng dịch vụ của họ theo cách này không quan trọng, nhưng họ cũng cung cấp thư viện GeoIP cho C, Perl, Python, vv với một cơ sở dữ liệu "lite" mà bạn có thể phân phối (với conditions).

+0

Vâng, tôi tham gia Cambridge MA nhưng maxmind đặt tôi ở Boston (gần, nhưng không giống nhau), và hostip.info đặt tôi vào ... Reston, VA, vv :) ​​Không đáng ngạc nhiên vì có lẽ hơn một nửa thông tin vẫn đến từ 'whois' . – vladr

+0

Tuyệt. Tôi đang cố gắng nghĩ về một cách tốt để grep ra chỉ là thành phố, khu vực và quốc gia. – icco

1

Nếu nền tảng của bạn là một * nixlike hỗ trợ network-manager, bạn có thể sử dụng kịch bản này: curl "https://maps.googleapis.com/maps/api/browserlocation/json?browser=firefox&key=AIzaSyDBgL8fm9bD8RLShATOLI1xKmFcZ4ieMkM&sensor=true" --data-urlencode "`nmcli -f SSID,BSSID,SIGNAL dev wifi list |perl -ne "if(s/^(.+?)\s+(..:..:..:..:..:..)\s+(.+?)\s*$/&wifi=mac:\2|ssid:\1|ss:\3/g){print;}"`" Check-out How to create a script to query Google Browserlocation để biết thêm chi tiết.

Lưu ý rằng có một số giới hạn đối với dịch vụ này. Ban đầu nó hoạt động tốt, nhưng bây giờ tôi nhận được "status" : "OVER_QUERY_LIMIT". Tôi không biết giới hạn là gì bởi vì tôi chỉ có thể tìm thấy tài liệu tham khảo mã hóa địa lý, nhưng nếu có ai biết, hãy cho tôi biết!

5

Kể từ whereami là không (chính thức) có sẵn cho Swift 2 và Swift 3, tôi đào một chút sâu hơn và tìm thấy locateme những gì hiện công việc của mình trên OSX 10.12.4:

Screenshot of LocateMe nó yêu cầu sự cho phép lần đầu tiên và sau đó nó hoạt động mà không có bất kỳ tương tác bổ sung nào. Ngoài ra, các thông số format là đẹp:

enter image description here

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