通过IP地址获取所在城市(高德)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过IP地址获取所在城市(高德)相关的知识,希望对你有一定的参考价值。

参考技术A 之前搜索过一些根据用户 ip 获取城市地位的一些 API 感觉都不够整洁。突然之间灵光一闪想到了高德必定提供了相关的 API。

第一步:登录 https://lbs.amap.com/ 高德地图开放平台,注册个人开发者(免费)

第二步:

第三步:

第四步

安装要求申请一个 key,完成之后,https://restapi.amap.com/v3/ip?key=yourKey. 就可以访问到相关数据啦。(免费)

附:如果有帮助到您,点个赞呗,蟹蟹。😀

php 怎么通过ip来获取所在位置

echo  getcposition(getIP());

function getIP()
    if (isset($_SERVER)) 
        if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) 
            $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
         elseif (isset($_SERVER[HTTP_CLIENT_IP])) 
            $realip = $_SERVER[HTTP_CLIENT_IP];
         else 
            $realip = $_SERVER[REMOTE_ADDR];
        
     else 
        if (getenv("HTTP_X_FORWARDED_FOR")) 
            $realip = getenv( "HTTP_X_FORWARDED_FOR");
         elseif (getenv("HTTP_CLIENT_IP")) 
            $realip = getenv("HTTP_CLIENT_IP");
         else 
            $realip = getenv("REMOTE_ADDR");
        
    
    return $realip;

function getcposition($ip)

$res1 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip");
$res1 = json_decode($res1,true);

//print_r($res1);
  if ($res1[ "code"]==0)
return $res1['data']["country"].$res1['data'][ "region"].$res1['data']["city"]."_".$res1['data'][ "isp"];
else
return "未知";
 

?>

参考技术A 可以使用第三方接口 比如百度地图 它可以通过ip来定位用户的经纬度坐标 有了坐标就可以直接定位用户所在城市和具体位置 参考技术B 我的代码,需要的朋友可以直接复制使用:
<?php
header('Content-Type:text/html;Charset=utf-8');
function GetIp()
$realip = '';
$unknown = 'unknown';
if (isset($_SERVER))
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown))
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
foreach($arr as $ip)
$ip = trim($ip);
if ($ip != 'unknown')
$realip = $ip;
break;


else if(isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], $unknown))
$realip = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], $unknown))
$realip = $_SERVER['REMOTE_ADDR'];
else
$realip = $unknown;

else
if(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), $unknown))
$realip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), $unknown))
$realip = getenv("HTTP_CLIENT_IP");
else if(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), $unknown))
$realip = getenv("REMOTE_ADDR");
else
$realip = $unknown;


$realip = preg_match("/[\d\.]7,15/", $realip, $matches) ? $matches[0] : $unknown;
return $realip;


function GetIpLookup($ip = '')
if(empty($ip))
$ip = GetIp();

$res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);
if(empty($res)) return false;
$jsonMatches = array();
preg_match('#\.+?\#', $res, $jsonMatches);
if(!isset($jsonMatches[0])) return false;
$json = json_decode($jsonMatches[0], true);
if(isset($json['ret']) && $json['ret'] == 1)
$json['ip'] = $ip;
unset($json['ret']);
else
return false;

return $json;

$ipInfos = GetIpLookup('123.125.114.144'); //baidu.com IP地址
var_dump($ipInfos);

以上是关于通过IP地址获取所在城市(高德)的主要内容,如果未能解决你的问题,请参考以下文章

获取客户端IP地址经纬度所在城市

PHP 根据IP地址获取所在城市

使用 PHP 从 IP 地址获取城市/状态

php 怎么通过ip来获取所在位置

PHP代码获取客户端IP地址经纬度及所在城市

怎样根据IP地址查询所在地