1. 查看API接口说明

地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

注:callback的功能暂未研究

2. 申请自己的ak(类似于连通百度地图服务器的钥匙,请勿泄露)

注:调试阶段,应用名称随意填写即可

3.1 将下面的url输入到浏览器中(更换成自己的ak),验证返回参数

页面显示

showLocation&&showLocation({"status":0,"result":{"location":{"lng":116.3084202915042,"lat":40.05703033345938},"precise":1,"confidence":80,"comprehension":100,"level":"道路"}})

注意:返回的格式不是json格式(json格式是直接大括号开始的)

介绍一个基于Chrome的小插件——FeHelper,可以自动美化代码,如下图所示


3.2 使用python验证

注意:需要将示例重点callback参数去掉,才能返回标准的json格式,否则json.loads()函数会报错
 import requests
import json
import pprint url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'#隐藏掉了我的ak最后三位
res = requests.get(url) json_data = json.loads(res.text)
pprint.pprint(json_data)#格式化打印,可读性更佳

结果

注意:使用pprint可以格式化打印结果

3.3 继续研究

 #查询某城市中的具体地点,两种写法均可
url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
url = 'http://api.map.baidu.com/geocoder/v2/?address=海淀区上地十街10号city=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
#查询某个城市或者某个省
url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'

4. 用户输入地点,输出经纬度(此处遇到了一个大坑!)

在使用requests.get(url)方法时,会将提交的url中的中文进行编码(即便你的python和网页的编码都是utf-8),url中的中文会显示成如下

http://api.map.baidu.com/geocoder/v2/?address=%E5%8C%97%E4%BA%AC%E5%B8%82&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***

需要使用urllib.parse.unquote()解码,但是解码完了虽然输出的url是正确的,但是再次使用requests.get()时又不对

注意一点是:这个方法不能在params中使用(params是字典格式,整体不支持;单独针对字典里的中文字符串进行这个操作也没有用,因为在字典里是正确的。只是在进行requests.get()时进行了url编码)

解决方案:

不使用reques.get(url,params)形式,使用format

url = 'http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'.format(address)

5. 根据需求输出经度、纬度

全部代码

 # -*- coding:utf-8 -*-
'''百度服务文档参考http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding'''
import requests
import json
import pprint
import urllib.parse #查询某城市中的具体地点,两种写法均可
#url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
#url = 'http://api.map.baidu.com/geocoder/v2/?address=海淀区上地十街10号city=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'
#查询某个城市
#url = 'http://api.map.baidu.com/geocoder/v2/?address=北京市&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***' address = input('请输入地址:')
'''
par = {
'address':address,
'output':'json',
'ak':'piQGckMZTubVw29GiBT1BDwDjwztm***',
}
url = 'http://api.map.baidu.com/geocoder/v2/'
res = requests.get(url,par)
print(res.url)#中文进行了再编码
url1 = urllib.parse.unquote(res.url)
print(url1)#进行中文解码后,输出正确
res1 = requests.get(url1)
print(res1.url)#中文进行了再编码
''' url2 = 'http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak=piQGckMZTubVw29GiBT1BDwDjwztm***'.format(address)
print(url2)
res2 = requests.get(url2)
print(res2)
json_data = json.loads(res2.text)
pprint.pprint(json_data)
longitude = json_data['result']['location']['lng']
latitude = json_data['result']['location']['lat']
print(longitude,latitude)

python3调取百度地图API输出某地点的经纬度信息的更多相关文章

  1. 【百度地图API】自行获取区域经纬度的工具

    原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...

  2. Python使用百度地图API根据地名获取相应经纬度

    今天有个需求,要根据地名获取经纬度坐标值. 于是我第一想法:打开百度地图,手动输入地名,获取.显然当地名较少时,可实施.然而,当地名较多时,此方法显然工作量很大. 于是,第二想法:代码获取,请求百度地 ...

  3. 百度地图api使用,简单搜索+经纬度定位+自定义消息窗口

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. java调用百度地图API依据地理位置中文获取经纬度

    百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的开发,百度地图api首页:http://developer.baidu.com/map/. 博主使用过依据地理依据地理位置中文获取经纬 ...

  5. 使用百度地图API自动获取地址和经纬度

    先上效果图,这是直接点击获取经纬度和地址的.没有做搜索的功能. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  6. python实现百度地图API获取某地址的经纬度

    申请百度API 1.打开网页 http://lbsyun.baidu.com/index.php?title=首页 选择功能与服务中的地图,点击左边的获取密匙,然后按照要求申请即可,需要手机和百度账号 ...

  7. 根据百度地图API获取指定地点的经纬度

    做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用 package com.hpzx.data; import java.io.BufferedReader; import ja ...

  8. 使用百度地图API查地理坐标

    在网络编程中,我们会和API打交道.那么,什么是API?如何使用API呢?本文分享了一下我对API的理解以及百度地图API的使用. API是"Application Programming ...

  9. 百度地图API相关点

    百度API接口:http://developer.baidu.com/map/jsdemo.htm#a1_1 百度地图API具体解释之地图标注:http://www.cnblogs.com/jz110 ...

随机推荐

  1. RabbitMQ使用教程(四)如何通过持久化保证消息99.99%不丢失?

    1. 前情回顾 RabbitMQ使用教程(一)RabbitMQ环境安装配置及Hello World示例 RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置 RabbitMQ使用 ...

  2. 【Linux】linux压缩和解压缩命令大全

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  3. Oracle子查询和多表查询

    多表查询需要用到表的连接 连接可以分为:(自行百度) 交叉连接(数字逻辑的笛卡尔积,不做解释) 等值连接 例如:select * from t_a, t_b where t_a.xx = t_b.xx ...

  4. Django之model基础(增删改查)

    一.ORM 映射关系 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象二.创建表(建立模型) 在创建表之前的准备 ...

  5. windows下 php集成环境如何通过cmd执行命令

    ---恢复内容开始--- php学习过程中 Windows环境下的php集成程序很多 这样方便了学习 但是在熟悉命令使用方面可以说是十分不便 本文将从两个方便 向大家介绍如何快速通过cmd命令实现命令 ...

  6. C# 发Domino邮件 报错误 Password or other security violation for database 的解决方案

    错误提示: Password or other security violation for database ******* 问题产生的描述: 之前C#发邮件是好的 加上了附件部分代码之后,出现了这 ...

  7. 父类和子类以及super关键字

    super和this关键字的特点类似:super代表的是父类对象的引用. 当子父类的成员出现同名时,可以通过super来进行区分. 子类的构造方法中,通过super关键字调用父类的构造方法. publ ...

  8. zabbix-3.4-快速入门

    1 登陆和配置用户 登陆Zabbix,以及在Zabbix内建立一个系统用户. 用户名:Admin 或者 admin 密码 : zabbix 增加用户 可以在 管理(Administration) → ...

  9. 如何查看与显示oracle表的分区信息

    显示分区表信息 显示数据库所有分区表的信息:DBA_PART_TABLES 显示当前用户可访问的所有分区表信息:ALL_PART_TABLES 显示当前用户所有分区表的信息:USER_PART_TAB ...

  10. 重置 file input

    有时用户上传相同附件时也需要触发input[type='file']的change事件,除了将form重置外,还可以将input的value设为空 <input type="file& ...