基于高德WEB服务API进行位置追踪。
只有 经纬度生成 后,才能使用逆地理编码获取POI信息。
POI(Point of Interest 兴趣点)通常是某个具体的位置,比如一个餐厅、一座商场。
AOI(Area of Interest 兴趣区域)是更大的区域范围,比如一个小区、一片公园、一块商圈。
文件运行:
python demo/geo_ex.py
输出示例,返回字段中的 location
即经纬度:
地理编码结果:
{'status': '1', 'info': 'OK', 'infocode': '10000', 'count': '2', 'geocodes': [{'formatted_address': '北京市朝阳区阜通东大街6号', 'country': '中国', 'province': '北京市', 'citycode': '010', 'city': '北京市', 'district': '朝阳区', 'township': [], 'neighborhood': {'name': [], 'type': []}, 'building': {'name': [], 'type': []}, 'adcode': '110105', 'street': '阜通东大街', 'number': '6号', 'location': '116.482086,39.990496', 'level': '门址'}, {'formatted_address': '北京市朝阳区阜通东大街6号院', 'country': '中国', 'province': '北京市', 'citycode': '010', 'city': '北京市', 'district': '朝阳区', 'township': [], 'neighborhood': {'name': [], 'type': []}, 'building': {'name': [], 'type': []}, 'adcode': '110105', 'street': '阜通东大街', 'number': '6号院', 'location': '116.482145,39.990039', 'level': '门址'}]}
地理编码结果:
{'status': '1', 'info': 'OK', 'infocode': '10000', 'count': '1', 'geocodes': [{'formatted_address': '北京市朝阳区东湖街道叶青大厦c座', 'country': '中国', 'province': '北京市', 'citycode': '010', 'city': '北京市', 'district': '朝阳区', 'township': [], 'neighborhood': {'name': [], 'type': []}, 'building': {'name': [], 'type': []}, 'adcode': '110105', 'street': [], 'number': 'c座', 'location': '116.468318,40.012600', 'level': '门址'}]}
针对经纬度 "116.482145,39.990039",对应的具体门牌号信息为 "北京市朝阳区阜通东大街6号",更容易理解的地址为 "北京市朝阳区望京街道方恒购物中心方恒国际"。
不要通过逆地理编码获取POI,非常不准:
官方建议通过搜索POI 2.0获取POI:
搜索POI 2.0即为项目主文件,可通过常规FastAPI文件启动方式启动服务进行测试。
POI分类编码可参考高德官方自定义修改。
创建env_config/.env.local
填入高德地图 API 的密钥,例如:
# 高德地图 API 的密钥
GAODE_API_KEY="你的密钥"
- 运行服务:
python main.py
- 访问接口:
服务运行后,根据你的ip,访问 http://127.0.0.1:8000/docs
,可以使用 Swagger UI 测试接口。
向 /search_poi/
发送 POST 请求,示例 JSON 数据:
示例--北京市朝阳区东湖街道叶青大厦c座的经纬度
{
"location": "116.468318,40.012600"
}
🚨经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。
返回结果:
返回的数据会是 POI 搜索结果(转换后的格式)。如果失败,将返回错误信息。
示例--北京市朝阳区东湖街道叶青大厦c座周边POI
{
"酒吧": [
"CLUB禾·高空观景西餐厅"
],
"中餐厅": [
"望京一号(博雅店)",
"俄士厨房(北京望京万象汇店)",
"黄记煌三汁焖锅(望京万象汇店)"
],
"普通商场": [
"北京望京万象汇"
],
"上海菜": [
"老吉堂上海本帮菜(望京店)"
],
"购物中心": [
"望京华彩商业中心"
],
"潮州菜": [
"潮粥荟·潮汕砂锅粥(望京万象汇店)"
],
"综合酒楼": [
"香丰阁(望京店)"
],
"云贵菜": [
"费大厨辣椒炒肉(北京望京万象汇店)"
],
"餐饮相关": [
"北京望京华彩智选假日酒店",
"拾也烤肉放题(望京万象汇店)"
],
"麦当劳": [
"麦当劳(广顺北大街餐厅)"
],
"火锅店": [
"海底捞火锅(望京万象汇店)"
],
"海鲜酒楼": [
"香丰渔港蒸汽海鲜·川湘菜(望京店)"
],
"日本料理": [
"将太无二(北京望京万象汇餐厅)"
],
"特色/地方风味餐厅": [
"很久以前羊肉串(北京望京万象汇店)"
],
"培训机构": [
"新东方国际教育·雅思托福(望京华彩校区)"
],
"电影院": [
"新影联·华谊兄弟电影中心"
],
"外国餐厅": [
"比格比萨自助(望京万象汇店)"
],
"四川菜(川菜)": [
"江边城外烤全鱼(望京万象汇店)"
],
"KTV": [
"T-ONE KTV同乐迪臻品店(望京万象汇店)"
],
"西餐厅(综合风味)": [
"FLY PIZZA&HOODADAK CHICKEN(望京店)"
],
"图书馆": [
"东湖街道图书馆"
],
"糕饼店": [
"北京稻香村(东湖欢乐颂北区店)"
]
}
请求体:
{
"location": "116.468318,40.012600",
"user_name": "中东土匪"
}
图示如下:
返回值如下,可运行该文件验证:
{
"collections": [
{
"timestamp": "2025-01-15 17:05:44",
"formatted_address": "北京市朝阳区望京街道方恒购物中心方恒国际",
"pois": {
"电影院": [
"奥兰环球影城(望京方恒购物中心二店)",
"奥兰环球影城(望京方恒购物中心一店)",
"中影CFR国际影城"
],
"餐饮相关": [
"都士牧人牛肉干",
"西塔老太太串店(北京首店)"
],
"安徽菜(徽菜)": [
"又见徽家(望京万科时代广场店)"
],
"糕饼店": [
"原麦山丘(万科时代中心店)"
],
"咖啡厅": [
"8KM COFFEE",
"MOJO(望京店)"
],
"娱乐场所": [
"kiki kids儿童空间(万科时代中心·望京店)"
],
"健身中心": [
"丽池阳光游泳健身"
],
"中餐厅": [
"日出拉面(望京店)",
"隐厨·中国菜馆(望京店)"
],
"北京菜": [
"提督·TIDU(望京万科店)"
],
"牛扒店(扒房)": [
"牛排家(万科时代中心店)"
],
"图书馆": [
"小街图书馆"
],
"麦当劳": [
"麦当劳(望京店)"
],
"日本料理": [
"酒鬼金横丁(望京万科店)"
],
"体育休闲服务场所": [
"良子健身(望京总店)"
],
"购物中心": [
"新世界百货(望京店)"
],
"火锅店": [
"海底捞火锅(望京新世界店)"
],
"科教文化场所": [
"嘉禾舞社(望京店)"
],
"意式菜品餐厅": [
"萨莉亚意式餐厅"
],
"江苏菜": [
"绿茶餐厅(望京新世界店)"
],
"星巴克咖啡": [
"星巴克(望京新世界店)"
]
}
},
{
"timestamp": "2025-01-15 17:08:02",
"formatted_address": "北京市朝阳区东湖街道叶青大厦C座",
"pois": {
"酒吧": [
"CLUB禾·高空观景西餐厅"
],
"中餐厅": [
"望京一号(博雅店)",
"俄士厨房(北京望京万象汇店)",
"黄记煌三汁焖锅(望京万象汇店)"
],
"普通商场": [
"北京望京万象汇"
],
"上海菜": [
"老吉堂上海本帮菜(望京店)"
],
"购物中心": [
"望京华彩商业中心"
],
"潮州菜": [
"潮粥荟·潮汕砂锅粥(望京万象汇店)"
],
"综合酒楼": [
"香丰阁(望京店)"
],
"糕饼店": [
"可露朵蛋糕CloudD'or(望京万象汇店)"
],
"云贵菜": [
"费大厨辣椒炒肉(北京望京万象汇店)"
],
"麦当劳": [
"麦当劳(广顺北大街餐厅)"
],
"餐饮相关": [
"北京望京华彩智选假日酒店",
"拾也烤肉放题(望京万象汇店)"
],
"火锅店": [
"海底捞火锅(望京万象汇店)"
],
"海鲜酒楼": [
"香丰渔港蒸汽海鲜·川湘菜(望京店)"
],
"日本料理": [
"将太无二(北京望京万象汇餐厅)"
],
"特色/地方风味餐厅": [
"很久以前羊肉串(北京望京万象汇店)"
],
"培训机构": [
"新东方国际教育·雅思托福(望京华彩校区)"
],
"北京菜": [
"便宜坊烤鸭(北京望京万象汇店)"
],
"电影院": [
"新影联·华谊兄弟电影中心"
],
"外国餐厅": [
"比格比萨自助(望京万象汇店)"
],
"四川菜(川菜)": [
"江边城外烤全鱼(望京万象汇店)"
],
"KTV": [
"T-ONE KTV同乐迪臻品店(望京万象汇店)"
],
"西餐厅(综合风味)": [
"FLY PIZZA&HOODADAK CHICKEN(望京店)"
]
}
}
]
}
请求体:
{
"location": "116.482145,39.990039",
"forecast": true
}
forecast
用于区分查询 实况天气 or 预报天气。预报天气高德默认返回4天,今天、明天、后天、大后天,由项目实用角度出发,笔者定义仅返回今天和明天的预报天气。
返回值:
高德天气查询接口的原始返回值为字典,人类难以理解,需要转化为人类可理解文本。示例如下:
实况天气的返回值示例:
北京朝阳区
天气:晴
温度:0°C
风向:东北
风力:≤3
湿度:45%
数据发布时间:2025-01-17 09:33:02
预报天气的返回值示例:
北京朝阳区
数据发布时间:2025-01-17 09:33:02
2025-01-17(星期5)
白天天气:晴
夜晚天气:晴
白天最高温度:7°C
夜晚最低温度:-4°C
白天风向:南
夜晚风向:南
白天风力:1-3级
夜晚风力:1-3级
2025-01-18(星期6)
白天天气:晴
夜晚天气:晴
白天最高温度:10°C
夜晚最低温度:-3°C
白天风向:西南
夜晚风向:西南
白天风力:1-3级
夜晚风力:1-3级