在使用百度地图的 逆地理编码 功能时遇到了一些问题,官方的文档有一些问题,并且说得也不是很清楚,现在把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. Quartz.NET实际
  2. Python编程基础:第三十一节 文件读取Read a File
  3. 直播报名 | 教你从 0 到 1 打造数字化运营闭环
  4. java代码初体验_第一次Java 8体验
  5. 常系数线性递推的第n项及前n项和(转载)
  6. 使用WebService与Oracle EBS进行集成(上)
  7. 人工智能秘史(三):为什么图灵希望AI犯错?
  8. 使用Gradle构建Java项目
  9. 08方法重载,覆写,多态
  10. 语言 ota_小米手表第五次OTA升级:百款新表盘 增加运动语音、振动提醒
  11. 虚拟机安装VMware ESXi 6.7安装过程介绍
  12. 使用xcopy对文件夹进行复制,del、rd 删除文件、文件夹
  13. 交互式、非交互式,登录式、非登录式Shell
  14. CCF201503-5 最小花费(30分)
  15. iOS 开发应用内跳转到App Store
  16. tarjan 算法模板
  17. loadrunner11下载
  18. python 打卡记录代码_Python的100天打卡(上)
  19. 外架小横杆外露长度规范要求_外架小横杆外露长度
  20. 什么是DOS操作系统

热门文章

  1. 30张地图看懂世界格局,用大数据说话
  2. 开发一个最简单的iOS App
  3. linux查看磁盘空间大小
  4. grep同时过滤多个条件
  5. 聚焦运营商信创运维,美信时代监控易四大亮点值得一试!
  6. 深入Array.prototype.slice()方法
  7. Protobuf3 使用..
  8. linux基础操作之四
  9. 华为发布首款鸿蒙系统终端,首款鸿蒙系统终端新闻 华为正式发布鸿蒙系统
  10. 亚马逊刷单测评的正确方法是什么样的?