公司网点表存储的坐标是百度坐标,现需要将网点位置标注到高德地图上,研究了一下高德地图的云图数据模版 http://lbs.amap.com/yuntu/reference/cloudstorage和坐标转换服务http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=724,云数据管理平台http://yuntu.amap.com/datamanager/   ,实现了excel文件的导入,现将实现步骤及使用的一些技巧总结一下:

本地数据导出为高德云图导出模版需要的excel文件

因为需要转为高德地图对应的坐标,高德提供了坐标转换的接口服务(http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=724),我想直接使用excel里的vba编程实现坐标的转换。

上面的文件导出后生成excel文件,红色的是模版必填的内容,蓝色的是选填的,为了后面其它应用的需要,我将对应的code和Id也存入到模版中

Excel VBA编程实现坐标转换

高德提供的坐标转换服务接口:http://restapi.amap.com/v3/assistant/coordinate/convert?locations=116.481499,39.990475&coordsys=baidu&output=Json&key=dd21bdd2263294d9e11b4a9f9d5d6c71

只要传入对应的坐标即可返回高德坐标(coordsys可选值:gps;mapbar;baidu),通过浏览器访问将返回如下格式数据,其中locations值就是对应的高德坐标。

根据这个接口,我使用Excel的VBA编程来实现接口请求和坐标转换,具体实现参考下面的截图

需要引用的对象如上图。

Function BytesToBstr(body, code)
Dim objstream
Set objstream = CreateObject("adodb.stream")
objstream.Type =
objstream.Mode =
objstream.Open
On Error Resume Next
objstream.Write body
On Error GoTo
objstream.Position =
objstream.Type =
objstream.Charset = code
BytesToBstr = objstream.ReadText
objstream.Close
Set objstream = Nothing
End Function Function GetGaoDeLocations(XmlStr As String) As String
Dim objHTTP, xmlDOC Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set xmlDOC = CreateObject("MSXML.DOMDocument")
strWebserviceURL = "http://restapi.amap.com/v3/assistant/coordinate/convert?coordsys=baidu&output=json&key=dd21bdd2263294d9e11b4a9f9d5d6c71&locations=" & XmlStr
objHTTP.Open "GET", strWebserviceURL, False '默认是POST方式
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send ("")
'objHTTP.send ("{locations:'" & XmlStr & "'}") 'XmlInput是Ws的参数
GetGaoDeLocations = CStr(BytesToBstr((objHTTP.responseBody), "utf-8")) Dim objSC, strJSON, objJS
strJOSN = GetGaoDeLocations
'调用ScriptControl对象
Set objSC = CreateObject("MSScriptControl.ScriptControl")
strJSON = "var o=" & strJOSN & ";"
objSC.Language = "javascript"
objSC.AddCode (strJSON)
Set objJS = objSC.CodeObject.o
GetGaoDeLocations = objJS.locations End Function

VBA里的代码如上,实现接口请求及返回值的处理。

通过拖动实现文本框内容的自动填充,拖动过程中,就自动去调用接口返回对应的高德坐标。

经过一番坐标转换后,需要再将返回值分割成经度和纬度分别填充到X,Y列。关于字符串分割,参考下面的方法:取左侧经度=LEFT(C2,FIND(",",C2)-1),取右侧纬度的=RIGHT(C2,LEN(C2)-LEN(D2)-1)

怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符.

如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作,

另外,怎么样从右边截取字符,就是和left()函数相反的那个功能.

=find(".",a2)
返回在数字中字符(小数点)的位置。 具体公式如下:
字符(小数点)前三位
=MID(A2,FIND(".",A2)-3,3) 字符(小数点)后三个
=MID(A2,FIND(".",A2)+1,3) 字符(小数点)前面的所有数字 =LEFT(A2,FIND(".",A2)-1) 字符(小数点)后面的所有数字 =RIGHT(A2,FIND(".",A2)-2) 以上均为不包括“字符”的情况。其它情况只需改变一下红色数字大小。

Excel文件上传到高德云图

 
 
全部上传后,通过http://yuntu.amap.com/share/2YJvMz可以看到效果

使用Excel VBA编程将网点的百度坐标转换后标注到高德地图上的更多相关文章

  1. excel VBA 编程

    Dim cuttent_columns As Integer Dim care_repeat As Integer Private Sub Workbook_Open() Dim i As Integ ...

  2. Android 编程 AMapLocationClientOption 类中的 setNeedAddress 方法用处 (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)

    最近在用高德地图来写Android App, 其中有一些 方法是不太理解的,这里写一下 对  高德地图  com.amap.api.location.AMapLocationClientOption ...

  3. Excel VBA 教程

    https://www.w3cschool.cn/excelvba/  Excel VBA 编程教程 https://www.yiibai.com/vba   VBA教程 http://www.acc ...

  4. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

  5. 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core

    百度地图和高德地图坐标系的互相转换   GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...

  6. 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明

    前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...

  7. js不同地图坐标系经纬度转换(天地图,高德地图,百度地图,腾讯地图)

    1.js转换代码 1 //转换常数 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var pi = 3.14159265358979324; ...

  8. 来吧!带你玩转 Excel VBA

    来吧!带你玩转 Excel VBA 从错失良机到艰辛的DOS征程,从坎坷购机自学路到转机起程,从爱好到事业,他从一个完全不懂电脑的人到VBA高级应用者,一切全是自学…… 我是罗刚君,来自四川的一个小县 ...

  9. 2017-5-29 Excel VBA 小游戏

    ---恢复内容开始--- 转一个Excel VBA的小游戏,最近对excel有了更深入的了解,功能很强大,也刷新了我对待事情的态度. 一.准备界面 我们先来把游戏界面准备好,选中前4行,行高调成50, ...

随机推荐

  1. Dynamics 365 启用跟踪及读取跟踪文件工具

    微软动态CRM专家罗勇 ,回复315或者20190313可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 当根据错误提示排查问 ...

  2. MyBatis学习---整合SpringMVC

    [目录]

  3. android添加阴影

    android底部增加背景 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns: ...

  4. Oracle dblink的连接模式的关系测试总结

    这篇主要介绍一下database link由于连接数据库的方式不同遇到的一些问题,我们知道连接ORACLE服务器的模式一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接 ...

  5. git排除插件(.ignore)配置

    # Created by .ignore support plugin (hsz.mobi) ### Maven template target/ ### JetBrains template # C ...

  6. Win7/Win8.1升级Win10后屏幕一直闪烁怎么办?

    有些用户在把Win7/Win8.1升级到Win10正式版后,发现屏幕一直不停闪烁,以至于无法正常使用.出现这种情况的原因可能有很多,微软社区的论坛审阅人Alex_Shen给出了一种解决方案:进入安全模 ...

  7. [题解] P2513 [HAOI2009]逆序对数列

    动态规划,卡常数 题目地址 设\(F[X][Y]\)代表长度为\(X\)的序列,存在\(Y\)组逆序对的方案数量. 考虑\(F[X][i]\)向\(F[X+1][i]\)转移: 把数字\(X+1\)添 ...

  8. windows 10 防火墙设置规则:允许特定ip端口

    本例中以如何设置ip为10.242.62.239的电脑通过3306端口访问我的电脑 为例 1, 打开防火墙高级设置,如图所示,操作如下 入站规则->新建规则->自定义->下一步 2, ...

  9. 《JavaScript设计模式与开发实践》笔记第一章

    第一章 面向对象的JavaScript 动态类型语言和鸭子类型 编程语言按照数据类型大体可以分为两类:静态类型语言.动态类型语言. 静态类型语言:在编译时便已确定变量的类型. 优点: 在编译时就能发现 ...

  10. url 的正则表达式:path-to-regexp

    概述 该工具库用来处理 url 中地址与参数,能够很方便得到我们想要的数据. js 中有 RegExp 方法做正则表达式校验,而 path-to-regexp 可以看成是 url 字符串的正则表达式. ...