2015-06-20 676 views
1

在我的基於PHP的應用程序中,當用戶根據IP地址登錄到webapp時,我想捕獲用戶機器的位置。如何根據IP地址獲取用戶機器的精確經緯度

我跟着這個方法:

$url = "http://freegeoip.net/json/$ip"; 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$data = curl_exec($ch); 
curl_close($ch); 

我得到的緯度和經度值,但這些都不是確切的,相反,他們是絕對的。在回覆中,我得到像這樣的JSON:

{ 
["ip"]=> string(11) "59.90.210.9" 
["country_code"]=> string(2) "IN" 
["country_name"]=> string(5) "India" 
["region_code"]=> string(0) "" 
["region_name"]=> string(0) "" 
["city"]=> string(0) "" 
["zip_code"]=> string(0) "" 
["time_zone"]=> string(12) "Asia/Kolkata" 
["latitude"]=> int(20) 
["longitude"]=> int(77) 
["metro_code"]=> int(0) 
} 

沒有城市沒有拉鍊的東西。有沒有更好的API來根據需要獲得確切的東西?預先感謝任何迴應。

+2

IP會*永遠不會*給你一個確切的位置,你的幸運,如果城市是正確的 – 2015-06-20 06:24:06

回答

0

您可以使用MaxMind's GeoIP服務/數據庫,它有兩個版本:GeoIP2和(Legacy)GeoIP。他們提供免費的數據庫和商業數據庫,後者更準確。他們有GeoIP2 PHP SDK on GithubLegacy GeoIP is included with PHP

MaxMind GeoIP2 Demo Page允許你輸入一個IP地址,並得到以下數據:

  1. 座標(經/緯度)
  2. 國家代碼(2字母國別代碼)
  3. ISP
  4. 位置(城市,州,國家,大陸)
  5. 地鐵代碼
  6. 組織
  7. 郵編(例如:郵編)

鏈接:

  1. MaxMind's GeoIP2 and Legacy GeoIP product page
  2. GeoIP2 demo page (enter IPs and get results)
  3. GeoIP2-php SDK on Github
  4. GeoIP on PHP.net
0

裏奇,你可以使用IP2Location地理定位服務或數據庫。它有兩個版本:a)commercial和b)LITE。他們在許多編程語言中都有一個編程API的頁面。

有一個在線demo頁面允許使用單一IP地址得到以下數據:

  1. 位置(國家,州,市)
  2. 座標(緯度,經度)
  3. 海拔
  4. 郵政編碼
  5. 電話(IDD和區號)
  6. 域名
  7. ISP名稱
  8. 時區
  9. 連接速度
  10. 氣象站(氣象站名稱和代碼)
  11. 移動運營商(MNC,MCC,品牌)
  12. 使用類型