2014-10-06 3 views
0

Я занимаюсь кодированием на своем локальном хосте, а также тестирую через свой телефон и планшет.

Я планировал использовать $_SERVER['REMOTE_ADDR'] для получения IP-адресов пользователей для геоинформации. однако при использовании мобильного телефона и локального хоста я получаю неправильный IP-адрес. Я попытался использовать jquery, чтобы получить геолокацию, однако я не могу вставить lat и lon в веб-ссылку. В это время я использую это, чтобы преодолеть свою проблему и получить IP lat и lon для другого API.

$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 или какую-либо форму браузера для всего? Моя цель - заставить посетителей lat и lon поместить его в 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> 

И получить яваскрипт объекта, описывающий ваш пользователь:

<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

0

Я хотел бы взглянуть на это:

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

это довольно легко получить данные GeoLocation из браузера с помощью JavaScript.

Если я правильно понял ваш вопрос, использование PHP для получения этих данных, безусловно, не сработает для вас, так как оно всегда будет получать информацию о серверах.

+0

Я думаю, проблема, с которой я сталкиваюсь, - это взять lat и lon из JavaScript и поместить его в ссылку openweathermap.org api! – DigitalOutcast

+0

skype me: mattsbi, и я помогу вам быстро. В противном случае, я думаю, вам нужно будет создать новый вопрос. –

0

Вы пробовали встроенный браузер HTML5 Geolocation API, который даст вам широту и долготу текущей позиции? Однако я бы не рекомендовал для этого какой-либо API-интерфейс для браузера.

Для получения IP-адреса вы используете свои статические IP-адреса для указания вашего сервера?

Если вы используете API-интерфейс geplugin только для получения lat, lng для IP-адреса пользователя, я думаю, что это не даст вам много точных результатов. Если IP отслеживается некорректно, то все последующие действия также становятся недействительными, поэтому данные о погоде, которые вы получили, как я понял.

Я думаю, что лучшим подходом было бы найти пользовательский lat, lng на стороне клиента, используя GeoLocation HTML5, и отправить их в ваш php-прокси, который вызовет API погоды и вернет необходимые результаты. Вы можете выполнить это с помощью AJAX. Если этот API погоды не имеет ограничений CORS или поддерживает jsonp, вы можете напрямую вызвать API погоды в обход отдельного прокси.

Если исходный код HTML5 не удается изначально, вы можете использовать некоторые резервные параметры, такие как API Maxmind и API карт Google.

Смежные вопросы