java 根据IP获取城市与经纬度(第二种)

本文介绍了一种使用百度地图API进行IP定位的方法,通过免费受限的普通IP方式获取位置信息,包括经度、纬度及详细地址。适用于国内IP定位需求,需注册并获取秘钥AK。

此方法使用的是百度地图
注意:
1. 本次采用的是免费受限普通IP方式, 不够精准, 如有更精确需求可以 花钱 购买高级服务
2. 普通IP方式范围目前仅限定国内IP定位
3. 需要注册获取相关秘钥ak在这里插入图片描述
不多说, 采用百度地图调用方式相对更加简单, 直接上代码

package com.example.demo.utils;

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.client.RestTemplate;

public class BDIPUtils {
    private static Logger logger = LoggerFactory.getLogger(BDIPUtils.class);
    private static final String HTTP = "http://api.map.baidu.com/location/ip";
    private static final String HTTPS = "https://api.map.baidu.com/location/ip";
    private static final String AK = "f6geaGQcxUCpRwcGVvSyU";
    private static final String COOR = "bd09ll";

    /*@Resource
    private RestTemplate restTemplate;*/
    private RestTemplate restTemplate = new RestTemplate();

    public JSONObject getDate(String ip) {
        String url = HTTPS+"?coor=bd09ll&ak="+AK+"&ip="+ip;
        return restTemplate.getForObject(url, JSONObject.class);
    }

    public static void main(String[] args) {
        String ip = "115.236.64.138"; // 访问IP
        BDIPUtils bdipUtils = new BDIPUtils();
        JSONObject jsonObject = bdipUtils.getDate(ip);
        logger.info("result={}", jsonObject.toJSONString());
        if (jsonObject != null) {
            JSONObject json = jsonObject.getJSONObject("content");
            logger.info("地址={}", json.get("address"));
            JSONObject pointJSON = json.getJSONObject("point");
            logger.info("经度={}; 纬度={}", pointJSON.get("x"), pointJSON.get("y"));
        }
    }
}

执行后输出结果:

result={"address":"CN|浙江|杭州|None|CHINANET|0|0","content":{"address":"浙江省杭州市","address_detail":{"city":"杭州市","city_code":179,"district":"","province":"浙江省","street":"","street_number":""},"point":{"x":"120.21937542","y":"30.25924446"}},"status":0}
地址=浙江省杭州市
经度=120.21937542; 纬度=30.25924446
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值