通过高德API和Python3实现通过IP获取地区

序幕

高德地图,是中国领先的数字地图内容、导航和位置服务解决方案提供商。拥有导航电子地图甲级测绘资质、测绘航空摄影甲级资质和互联网地图服务甲级测绘资质“三甲”资质,其优质的电子地图数据库成为公司的核心竞争力。

最新地图浏览器:最新矢量地图渲染,最高质量地图效果、最丰富数据信息、最快速操作体验、最节省数据流量。专业地图服务:实地采集、网络采集,行业领先。

丰富的出行查询功能:地名信息查询、分类信息查询、公交换乘、驾车路线规划、公交线路查询、位置收藏夹等丰富的基础地理信息查询工具。

成为现代人们生活的必备品

获取key并查询

  1. 注册成功之后,创建新应用

    进入控制台,创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。

    de

  2. 添加新Key

    在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次:输入应用名名称,选择绑定的服务为“web服务API”,如下图所示:

    de

    在阅读完高德地图API服务条款后,勾选此选项,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了。

    de

  3. 进入高德IP定位,并查看官方文档

    de

  4. 使用已申请的key

    第一步,申请”web服务 API”密钥(Key);

    第二步,拼接HTTP请求URL,第一步申请的Key需作为必填参数一同发送;

    第三步,接收HTTP请求返回的数据(JSON或XML格式),解析数据。

    如无特殊声明,接口的输入参数和输出数据编码全部统一为UTF-8。

  5. IP定位API服务地址:

    URLhttps://restapi.amap.com/v3/ip?parameters
    请求方式GET
  6. 请求参数

    参数名含义规则说明是否必须缺省值
    key请求服务权限标识用户在高德地图官网申请Web服务API类型KEY必填
    ipip地址需要搜索的IP地址(仅支持国内)若用户不填写IP,则取客户http之中的请求来进行定位可选
    sig签名选择数字签名认证的付费用户必填可选
    output返回格式可选值:JSON,XML可选JSON
  7. 请求接口了解完之后,开始写代码

    import requests
    ip = '114.247.50.2'
    url = 'https://restapi.amap.com/v3/ip?ip='+ip+'&output=json&key=66a7ff5f4d2371a783d196becc856f94'
    res = requests.get(url)
    print(res.text)
    
  8. 调用结果

    {"status":"1","info":"OK","infocode":"10000","province":"北京市","city":"北京市","adcode":"110000","rectangle":"116.0119343,39.66127144;116.7829835,40.2164962"}
    
  9. 这个ip只能我们手动输入,但我们可以使用socket模块来获取本机的ip

    import socket
    # 获取本机计算机名称
    hostname = socket.gethostname()
    # 获取本机ip
    ip = socket.gethostbyname(hostname)
    print(ip)
    
  10. 打印结果

    192.168.1.1  # 因为我用的以太网,所以获取到的是以太网IP
    
  11. 两者结合使用

    import requests
    import socket
    # 获取本机计算机名称
    hostname = socket.gethostname()
    # 获取本机ip
    ip = socket.gethostbyname(hostname)
    url = 'https://restapi.amap.com/v3/ip?ip='+ip+'.139&output=json&key=66a7ff5f4d2371a783d196becc856f94'
    res = requests.get(url)
    print(res.text)
    

结语

通过调用高德接口,可以很方便实现通过IP查询地址

更多内容查看高德开放平台

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是获取当前位置并每秒获取一次的代码示例: 1. 添加权限 在 AndroidManifest.xml 文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> ``` 2. 添加依赖库 在 build.gradle 文件中添加以下依赖库: ``` implementation 'com.amap.api:location:4.4.0' implementation 'com.amap.api:maps:5.5.0' ``` 3. 实现定位回调 在 Activity 或 Fragment 中实现 AMapLocationListener 接口,重写 onLocationChanged 方法,在该方法中获取当前位置信息。 ``` public class MainActivity extends AppCompatActivity implements AMapLocationListener { private AMapLocationClient mLocationClient; private AMapLocationClientOption mLocationOption; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化定位客户端 mLocationClient = new AMapLocationClient(getApplicationContext()); mLocationClient.setLocationListener(this); // 配置定位参数 mLocationOption = new AMapLocationClientOption(); mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); mLocationOption.setInterval(1000); mLocationClient.setLocationOption(mLocationOption); // 启动定位 mLocationClient.startLocation(); } @Override public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation != null) { if (aMapLocation.getErrorCode() == 0) { // 定位成功 double latitude = aMapLocation.getLatitude(); double longitude = aMapLocation.getLongitude(); String address = aMapLocation.getAddress(); // 处理定位结果 // ... } else { // 定位失败 String errorInfo = aMapLocation.getErrorInfo(); Log.e(TAG, "定位失败:" + errorInfo); } } } @Override protected void onDestroy() { super.onDestroy(); // 停止定位 mLocationClient.stopLocation(); // 销毁定位客户端 mLocationClient.onDestroy(); } } ``` 上述代码中,我们创建了一个 AMapLocationClient 对象和一个 AMapLocationClientOption 对象。AMapLocationClient 用于发起定位请求,AMapLocationClientOption 用于配置定位参数。在 onCreate 方法中,我们将定位模式设置为 Hight_Accuracy,即高精度定位模式。将获取定位结果的时间间隔设置为 1000 毫秒,即每秒获取一次位置信息。然后通过调用 startLocation 方法启动定位。 在 onLocationChanged 方法中,我们处理定位结果。如果定位成功,我们从 AMapLocation 对象中获取经纬度和地址信息。如果定位失败,我们从 AMapLocation 对象中获取错误信息并打印错误日志。在 onDestroy 方法中,我们停止定位并销毁定位客户端。 注意:在使用高德地图定位功能时,需要在代码中申请定位权限,并在 AndroidManifest.xml 文件中添加定位权限。同时,需要在高德开放平台申请应用的 AppKey,并在 AndroidManifest.xml 文件中添加 meta-data 标签,将 AppKey 配置到应用中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值