百度地图API跨域问题解决

本文介绍了在使用百度地图Geocoding API时遇到的跨域问题及其解决方案。通过示例详细展示了如何进行地理编码和逆地理编码,并指出由于百度返回的是JSON格式而非JSONP,因此传统的JSONP方法无法解决跨域。最终给出的解决办法是在请求中添加`jsoncallback=?`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/*看重点的在最后一行*/
————————————————————————————————————————————
最近项目需求使用一个地图插件mapbox,界面挺好看的,可应用在web端和客户端。

 

然而国内用的人很少,API需要自己啃,艰难。客户又要好看的界面,又要提供中文服务,摔!

于是采用了和百度地图提供的API结合的方式来实现。

需要完成的功能:
1.Geocoding:
经纬度与地址互相转换
2.手动输入地址查询,就是百度地图的搜索功能

百度地图提供的API很齐全,此次主要使用的是Geocoding和Place Suggestion2个服务,另还使用了JavaScript API里面的autocomplete模块,用起来真的很快啊。此次要讲的是在使用API提供接口的一个跨域问题。

Geocoding API
 

Geocoding API v2.0

1.什么是Geocoding?

Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送HTTP请求且接收JSON、XML的返回数据。

geocoding.png

2.功能介绍

Geocoding API包括地址解析和逆地址解析功能。

地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”

逆地理编码,即逆地址解析,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。

3.如何使用

百度地图Geocoding API是一套免费对外开放的API,默认配额100万次/天。使用方法:

第一步:申请ak(即获取密钥),若无百度账号则首先需要注册百度账号。

第二步,拼写发送http请求的url,注意需使用第一步申请的ak。

第三步,接收http请求返回的数据(支持json和xml格式)。

Hello, World

以下是一个关于地理编码的简单示例。发送一个地址是“百度大厦”的请求,返回该地址对应的地理坐标。发送请求的url如下:

http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation

结果说明:点击上述请求url,返回地址“百度大厦”解析的json格式的数据。

4.服务地址

百度地图Geocoding API服务地址:

http://api.map.baidu.com/geocoder/v2/

组成说明:

域名:api.map.baidu.com

服务名:geocoder

服务版本号:较之前版本,v2版本新增参数。

5.通用接口参数

参数 是否必须 默认值 格式举例 含义
output xml json或x
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值