在使用百度地图的 逆地理编码 功能时遇到了一些问题,官方的文档有一些问题,并且说得也不是很清楚,现在把C# 版本的引用方式和调用方法在这里记录一下,给有需要的人参考一下。

SN码生成类

    public class AKSNCaculater{private static string MD5(string password){try{System.Security.Cryptography.HashAlgorithm hash = System.Security.Cryptography.MD5.Create();byte[] hash_out = hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password));var md5_str = BitConverter.ToString(hash_out).Replace("-", "");return md5_str.ToLower();}catch{throw;}}private static string UrlEncode(string str){str = System.Web.HttpUtility.UrlEncode(str);byte[] buf = Encoding.ASCII.GetBytes(str);//等同于Encoding.ASCII.GetBytes(str)for (int i = 0; i < buf.Length; i++)if (buf[i] == '%'){if (buf[i + 1] >= 'a') buf[i + 1] -= 32;if (buf[i + 2] >= 'a') buf[i + 2] -= 32;i += 2;}return Encoding.ASCII.GetString(buf);//同上,等同于Encoding.ASCII.GetString(buf)}private static string HttpBuildQuery(IDictionary<string, string> querystring_arrays){StringBuilder sb = new StringBuilder();foreach (var item in querystring_arrays){sb.Append(UrlEncode(item.Key));sb.Append("=");sb.Append(UrlEncode(item.Value));sb.Append("&");}sb.Remove(sb.Length - 1, 1);return sb.ToString();}public static string CaculateAKSN(string ak, string sk, string url, IDictionary<string, string> querystring_arrays){var queryString = HttpBuildQuery(querystring_arrays);var str = UrlEncode(url + "?" + queryString + sk);return MD5(str);}}

调用方法:

 public class LocationService{/// <summary>/// 根据经纬度获取地理位置/// </summary>/// <param name="lat">纬度</param>/// <param name="lng">经度</param>/// <returns>具体的地埋位置</returns>public static string GetLocation(string lat, string lng){try{var ak = "你的AK";var sk = "你的SK";var uri = "http://api.map.baidu.com";var path = "/reverse_geocoding/v3/";var param = new Dictionary<string, string>();string location = string.Format("{0},{1}", lat, lng);param.Add("ak", ak);param.Add("location", location);param.Add("output", "json");param.Add("coordtype", "wgs84ll");var sn = AKSNCaculater.CaculateAKSN(ak, sk, path, param);location = string.Format("{0}%2C{1}", lat, lng);var url = string.Format("{0}{1}?ak={2}&location={3}&output=json&coordtype=wgs84ll&sn={4}",uri,path,ak,location,sn);//发送 http get请求,可以使用自己顺手的方法var str = ExifEdit.Common.Utils.GetHttpPage(url, 1000);return str;}catch (Exception){return "";}}}

这样就可以了,需要注意的是拼装经纬度参数这部分,传入生成SN的参数要使用逗号分隔,但在生成URL时,必须将逗号转义成 %2C,否则会提示  APP SN校验失败。

百度地图API调用问题-sn 的生成相关推荐

  1. Java web与web gis学习笔记(二)——百度地图API调用

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  2. 百度地图api调用 实现车载导航功能

    百度地图api调用 实现车载导航功能 1.进入百度地图开放平台登录账号 2.百度地图api密钥获取 要想使用百度地图的api就需要申请创建对应的应用功能并获取AK密钥,从而才可以成功调用api的功能模 ...

  3. java web调用百度地图_Java web与web gis学习笔记(二)——百度地图API调用

    一.申请百度地图开发者 百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,包括JavaScript API.Web服务API.Android SDK.iOS SDK.定位SDK.车联网 ...

  4. 百度地图API调用实现获取经纬度以及标注

    一.申请AK 百度搜索百度地图API,进入官网文档,按照官网文档提示注册百度账号并申请AK.申请AK 填写相关信息,应用名称随意.应用类型根据协议来选择. 二.编写代码 根据官网的代码(入门引用和获取 ...

  5. 百度地图API调用实例之地址标注与位置显示

    之前弄了个谷歌地图API标注的调用实例,后来要求改成百度地图. 感谢主,通过网上资料(百度地图API,百度地图API详解之地图标注)收集及研究, 终于把百度地图标注和显示功能实现出来了,具体实现方法如 ...

  6. GPS坐标转换 百度地图API调用

    1 如果GPS输出的值是DD.DDDDDDDD格式的,直接调用地图API的转换函数处理,就可以正常显示 2 如果GPS输出的值是DD.MMMMMMMM格式的,就需要先进行分转度处理,然后再调API,就 ...

  7. 百度地图api调用逆地理编码(python3)sn校验方式

    程序功能 通过调用百度api,输入中文地址,返回经纬度. 网站接口解释 百度官网其实有很清楚的,开发文档解释,链接:http://lbsyun.baidu.com/index.php?title=we ...

  8. 百度地图api location 211 sn校验失败

    2019独角兽企业重金招聘Python工程师标准>>> http://api.map.baidu.com/geocoder/v2/?location=22.528212,113.93 ...

  9. springboot8==调用百度地图API从浏览器获取经纬度,后端使用geodesy依赖计算配送距离

    见百度地图API调用文档 jspopularGL | 百度地图API SDK ================ <!--引入百度地图API用于从浏览器获取当前经纬度--> <scri ...

最新文章

  1. mysql cluster_redislt;3.cluster集群模式gt;
  2. 天猫首页迷思之-jquery实现左侧广告牌图片轮播
  3. WPF 实现 DataGrid/ListView 分页控件
  4. find_cmd函数分析
  5. 梅特勒托利多xk3124电子秤说明书_托利多电子秤使用说明
  6. resnet101网络结构
  7. 网易邮箱支持手机收发邮件的服务器,[IT博览]网易163/126免费邮箱100%兼容iPhone/iPad邮件收发...
  8. linux运行raxml,在线和本地两种方法构建 RAxML 进化树方法和解读
  9. 在VS2010中文版中配置OpenGL及问题解决
  10. uniapp 发布h5后报错,连接服务器超时,点击屏幕重试
  11. 浩哥的Linux学习笔记之touch命令
  12. 苹果侧边滑动返回_iOS系统右滑返回手势问题及解决方案
  13. 标题相似度算法_一个简单的计算文章相似度功能!
  14. 关于win7 出现两个本地连接不能上网的问题?
  15. U盘/光盘制作win10+Ubutun16.04
  16. 硬核图书系列:《漫画算法:小灰的算法之旅》
  17. 梅赛德斯-奔驰将区块链技术应用于可持续交易账簿及供应链
  18. 全球及中国润滑油市场调查及投资发展规模预测报告2022-2028年版
  19. 南京师范大学提前面试真题领取
  20. 如何获取recovery模式的log

热门文章

  1. 调试SQL SERVER存储过程
  2. 博客系统(界面设计)
  3. 【Leetcode】周赛204 罗布乐思
  4. jmeter调试取样器
  5. ALUBI LPMS-IG1 RS232 IMU ROS2驱动安装
  6. 70、android 查看当前显示activity方式
  7. FFmpeg 源码之内存管理函数族
  8. php初学者,php技术支持,php学习网站
  9. 【算法详解】如何使用递归,递归使用的技巧详解
  10. vue3.x 中使用 vant <van-image>图片不显示的问题