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. 谷歌地图自定义popup框

    谷歌地图的infowindow 不提供官方的定制化 <!DOCTYPE html> <html> <head> <meta name="viewpo ...

  2. webpack源码之ast简介

    什么是AST 树是一种重要的数据结构,由根结点和若干颗子树构成的. 根据结构的不同又可以划分为二叉树,trie树,红黑树等等.今天研究的对象是AST,抽象语法树,它以树状的形式表现编程语言的语法结构, ...

  3. 一些C/C++中的函数

    项目中使用到的C/C++中的一些函数,记录下来加以理解和掌握. 1.memset( ) memset是计算机中C/C++语言函数.将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASC ...

  4. JS案例练习:图片切换+切换模式

    先附图: CSS样式部分: <style> *{;} body{font-family:'Microsoft YaHei';} .menu{margin:20px auto 0; widt ...

  5. yum安装软件并保留下载的软件

    使用yum插件downloadonly下载安装软件需要的依赖包并保留到指定的文件 安装yum-downloadonly或 yum-plugin-downloadonly 软件包. yum instal ...

  6. char*、string、CString各种字符串之间转换

    参考博客: http://blog.csdn.net/luoweifu/article/details/20242307 http://blog.csdn.net/luoweifu/article/d ...

  7. noip模拟赛#39

    昨晚打开的题想了一会发现都不会后决定慢慢想.然后早上开校会的时候莫名其妙的都想出来了... T1:m=100,ai=50000,i<=5.1到m的数每个数只能用一次,判断是否能够有这些数的某些数 ...

  8. 关于explain

    > db.imooc_2.find({x:}).explain() { "queryPlanner" : { , "namespace" : " ...

  9. python_58_装饰器1

    装饰器:定义:本质是函数,(装饰其他函数),就是为其它函数添加附加功能原则:1.不能修改被饰的函数的源代码 2.不能修改被饰的函数的调用方式实现装饰器知识储备: 1.函数即“变量” 2.高阶函数 3. ...

  10. spring-boot自定义启动端口

    有时候我们可能需要启动不止一个SpringBoot,而SpringBoot默认的端口号是8080,所以这时候我们就需要修改SpringBoot的默认端口了.修改SpringBoot的默认端口有两种方式 ...