蘭雅sRGB 个人笔记 https://262235.xyz
提供编程和电脑应用视频教程,工具和源代码
C, C++, Python Programming, Source Code, Video

旧Hexo博客 | Github | IP定位WebAPI | Docker Hub
编程中文文档 | 网盘分享 | 中文Linux命令

Pytyhon 使用百度地图API 进行 IP普通定位和地图显示

123.png

演示网址: https://www.262235.xyz/ip/


ip2bdgps.webp

  • 这时我搭建和部署好的实际使用演示,调用 百度IP定位在服务端会被ban,所以就使用城市名调用地图 和 获得json在本地使用

登陆百度地图开放平台,【应用管理】-【我的应用】:创建应用生成 (AK码)

Web服务API 普通IP定位文档

  • 请求URL

    https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll //HTTPS协议
  • 返回结果(JSON格式):

    {  
      address: "CN|北京|北京|None|CHINANET|1|None",    #详细地址信息  
      content:    #结构信息  
      {  
          address: "北京市",    #简要地址信息  
          address_detail:    #结构化地址信息  
          {  
              city: "北京市",    #城市  
              city_code: 131,    #百度城市代码  
              province: "北京市",    #省份      
          },  
          point:    #当前城市中心点  
          {  
              x: "116.39564504",    #当前城市中心点经度
              y: "39.92998578"    #当前城市中心点纬度
          }  
      },  
      status: 0    #结果状态返回码  
    }

ip2bdgps.py

import requests
import json

url = 'https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll'
r = requests.get(url)
json_str = r.text
data = json.loads(json_str)
print(data)

ip2bdgps 函数用来过的 bdgps x,y 坐标和状态码

import requests
def ip2bdgps(ip):
    url = 'https://api.map.baidu.com/location/ip?ak={{ 您的AK }}&ip=' + ip + '&coor=bd09ll'
    r = requests.get(url=url, headers=headers)
    data = r.json()
    if data['status'] != 0 :
        return  (116.39564504, 39.92998578 , data['status'])    # 查不到返回 北京 x,y
    else:
        x = data['content']['point']['x']
        y = data['content']['point']['y']
    return  (x, y, data['status'], data)  # 为了调试 把json数据

ip = '114.114.114.114'
bdgps = ip2bdgps(ip)
print(bdgps)       # 返回 ('116.41338370', '39.91092455', 0,  ... data的json数据 )

百度地图的 “Hello, World”

开始学习百度地图API最简单的方式是看一个简单的示例。该示例帮助您快速了解百度地图API的基本使用,快速创建一张“我的地图”。

如下代码可以实现一个简单完整的全屏展示的地图Demo:


<!DOCTYPE html>  
<html>
<head>  
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<title>Hello, World</title>  
<style type="text/css">  
html{height:100%}  
body{height:100%;margin:0px;padding:0px}  
#container{height:100%}  
</style>  
<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥">
</script>
</head>  
 
<body>  
<div id="container"></div> 
<script type="text/javascript"> 
var map = new BMap.Map("container");
// 创建地图实例  
var point = new BMap.Point(116.404, 39.915);
// 创建点坐标  
map.centerAndZoom(point, 15);
// 初始化地图,设置中心点坐标和地图级别  
map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放
</script>  
</body>  
</html>

适应移动端页面展示

下面我们添加一个meta标签,以便使您的页面更好的在移动平台上展示。

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  

设置容器样式

设置容器样式大小,使地图充满整个浏览器窗口:

<style type="text/css">  
    html{height:100%}    
    body{height:100%;margin:0px;padding:0px}    
    #container{height:100%}    
</style> 

引用百度地图API文件

<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥"></script>

创建地图容器元素

地图需要一个HTML元素作为容器,这样才能展现到页面上。这里我们创建了一个div元素。

<div id="container"></div> 

创建地图实例

位于BMap命名空间下的Map类表示地图,通过new操作符可以创建一个地图实例。其参数可以是元素id也可以是元素对象。

var map = new BMap.Map("container"); 

设置中心点坐标

这里我们使用BMap命名空间下的Point类来创建一个坐标点。Point类描述了一个地理坐标点,其中116.404表示经度,39.915表示纬度。(为天安门坐标)

var point = new BMap.Point(116.404, 39.915); 

地图初始化,同时设置地图展示级别

在创建地图实例后,我们需要对其进行初始化,BMap.Map.centerAndZoom()方法要求设置中心点坐标和地图级别。 地图必须经过初始化才可以执行其他操作。

map.centerAndZoom(point, 15); 

地图中使用鼠标滚轮控制缩放

map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放

本原创文章自由转载,转载请注明本博来源及网址 | 当前页面:兰雅sRGB个人笔记 » Pytyhon 使用百度地图API 进行 IP普通定位和地图显示