无法从地理位置获取城市名称
Posted
技术标签:
【中文标题】无法从地理位置获取城市名称【英文标题】:unable to get city name from geo location 【发布时间】:2016-01-04 12:09:00 【问题描述】:我正在使用以下代码获取国家和城市名称
<?php
$user_ip= getenv('REMOTE_ADDR');
$geo= unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$city= $geo["geoplugin_city"];
$country= $geo["geoplugin_countryName"];
?>
当我回显时,它会打印国家/地区名称,但对于城市,它会显示
Undefined index: geoplugin_city
将var_dump
用于$geo
我在数组中得到[geoplugin_city]
但当我var_dump($city) i get null
时
请帮帮我
这是我的 var_dump($geo) 结果
Array ( [geoplugin_request] => 83.110.15.6
[geoplugin_status] => 206
[geoplugin_credit] => Some of the returned data includes GeoLite
data created by MaxMind, available
from http://www.maxmind.com.
[geoplugin_city] =>
[geoplugin_region] =>
[geoplugin_areaCode] => 0
[geoplugin_dmaCode] => 0
[geoplugin_countryCode] => AE
[geoplugin_countryName] => United Arab Emirates
[geoplugin_continentCode] => AS
[geoplugin_latitude] => 24
[geoplugin_longitude] => 54
[geoplugin_regionCode] =>
[geoplugin_regionName] =>
[geoplugin_currencyCode] => AED
[geoplugin_currencySymbol] => Dh
[geoplugin_currencySymbol_UTF8] => Dh
[geoplugin_currencyConverter] => 3.6719 )
【问题讨论】:
向我们展示var_dump($geo);
只是展示。
为什么geoplugin_city
键不能为空?
看看我的价值请检查我如何从中获得我的城市?
有时 geoplugin 不提供城市名称。使用 $city= !empty($geo["geoplugin_city"])?$geo["geoplugin_city"]:'N/A';
这是print_r
,如果你使用var_dump
- 你会看到geoplugin_city' => string '' (length=0)
,所以它是一个空字符串。
【参考方案1】:
这是因为GeoPlugin
向您返回status 200,这意味着您所在国家/地区的城市信息不可用。
如果你试试这个 IP:119.30.127.20(巴基斯坦)
它会返回status 200
,其中城市和州字段为空。
但是当你尝试这个 IP 时:168.143.160.187 (USA)
它将向您返回status 206
以及城市和州信息。
这里是状态索引:
[geoplugin_status] => 200
如需更多详情,请访问GeoPlugin Web Services 并查看您所在国家/地区的信息(无论是否提供城市级别的信息)。
更新:
GeoPlugin 仅提供 UAE
的 3% 城市级别信息
【讨论】:
@Sikander:访问我提供的链接。你会明白的。以上是关于无法从地理位置获取城市名称的主要内容,如果未能解决你的问题,请参考以下文章