2014-10-06 90 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。

相关问题