2014-10-06 51 views
0

我在我的本地主機上做了一些編碼,並且還通過手機和平板電腦進行了測試。

我計劃使用$_SERVER['REMOTE_ADDR']來獲取用戶的IP地理編碼。 但是,當使用手機和本地主機我得到錯誤的IP。 我嘗試使用jquery獲取地理位置,但是我無法將lat和lon插入到weblink。 在這個時候,我正在使用這個來克服我的問題,併爲另一個API獲取IP lat和lon。

$b = '192.168.1.1'; 
if($_SERVER['REMOTE_ADDR'] == $b) 
{ 
    $response = file_get_contents('http://www.geoplugin.net/json.gp?ip=18.252.235.89'); 
    $area = json_decode($response, true); 
} 
else 
{ 
    $response = file_get_contents('http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR']); 

    $area = json_decode($response, true); 
}; 

我用上面的代碼來獲得緯度和經度,並插入到

http://api.openweathermap.org/data/2.5/weather?q='.$area["geoplugin_city"],$area["geoplugin_region"].'&APPID=000000 

但是我的本地機器上,而不是在移動設備上這隻作品,這是一個很大的爲獲取經緯度而工作;並且使用API​​獲取另一個API信息在我看來是錯誤的。

有沒有我可以使用jQuery或某種形式的瀏覽器位置的一切? 我的目標是讓訪問者將緯度和經度放置到openweathermap.org api中。

我希望我已經提供了每個人都需要的信息來幫助我。

回答

0

我最近開發了一個客戶端解決方案(基於IP地址)。這就是所謂的userinfo.io

基本上,你會在頁面中插入該腳本:

<script type="text/javascript" href="//cdnjs.cloudflare.com/ajax/libs/userinfo/1.0.0/userinfo.min.js"></script> 

並獲得描述你的用戶一個JavaScript對象:

<script type="text/javascript"> 
UserInfo.getInfo(function(data) { 
    console.log(data.position.latitude); // That's your latitude 
    console.log(data.position.longitude); // That's your longitude 
    // There are plenty of other information in the "data" object 
}, function(err) { 
    // the "err" object contains useful information in case of an error 
}); 
</script> 

它可以是你的好選擇。

+0

不錯,我會用這個。謝謝! – DigitalOutcast 2014-10-08 04:18:52

0

我想看看這個:

https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition

它很容易從使用JavaScript的瀏覽器中得到地理定位數據。

如果我正確理解你的問題,使用PHP來獲取這些數據絕對不會對你有用,因爲它總能得到服務器信息。

+0

我想我遇到的問題是從JavaScript獲取經緯度並將其放置到openweathermap.org api鏈接! – DigitalOutcast 2014-10-06 06:45:32

+0

Skype我:mattsbi,我會幫你快速。否則,我認爲你需要創建一個新的問題。 – 2014-10-06 06:50:51

0

您是否試過瀏覽器內嵌的HTML5地理位置API,它會給您當前位置的經緯度?不過,我不會爲此推薦任何瀏覽器特定的API。

對於沒有獲取IP地址,您是否使用靜態IP地址指向您的服務器?

如果您正在使用geoplugin API來獲取lat,lng用戶的IP地址,我認爲這不會給您總是很準確的結果。如果IP被錯誤地跟蹤,那麼所有下面的行動結果也會變得無效,因此我所瞭解的最終收到的天氣數據。

我認爲一個更好的方法是使用HTML5 GeoLocation在客戶端找到用戶的lat,lng並將它們發送到您的php代理,該代理將調用天氣API並返回必要的結果。您可以使用AJAX完成此操作。如果該天氣API沒有CORS限制或支持jsonp,則可以直接呼叫天氣API繞過單獨的代理。

如果最初HTML5 GeoLocation失敗,則可以使用一些後備選項,如Maxmind API和Google Map API。