首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML地址GeoCoding访问VBA

XML地址GeoCoding访问VBA
EN

Stack Overflow用户
提问于 2014-10-23 16:06:17
回答 1查看 749关注 0票数 1

我正在使用Access 2010,并试图逆转一个地理代码。我指定一个lat长的位置,然后结果显示在一个列表框中。我有一个表单,有一个列表框和一个命令按钮。命令按钮具有以下onclick事件:

代码语言:javascript
复制
Dim XMLDoc As New DOMDocument
Dim XMLNode As IXMLDOMNode
Dim i As Long
Dim lat As Double, lng As Double

XMLDoc.Load "http://maps.googleapis.com/maps/api/geocode/xml?latlng=37.4250011,-122.0955909&sensor=false"

Do Until XMLDoc.ReadyState = 4
DoEvents
Loop

If Len(XMLDoc.Text) = 0 Then
    Call MsgBox("No data!")
    Exit Sub
End If

Set XMLNode = XMLDoc.selectSingleNode("/GeocodeResponse/result/formatted_address")

For i = 0 To XMLNode.childNodes.length - 1

Me.List1.AddItem Item:=XMLNode.childNodes(i).baseName & XMLNode.childNodes(i).Text

Next i

因此它检索格式化的地址。不过,我想把地址中的街道号码部分排除在外。例如,如果您转到:

代码语言:javascript
复制
http://maps.googleapis.com/maps/api/geocode/xml?latlng=37.4250011,-122.0955909&sensor=false

我只想要‘海滨公园路,山景城,CA 94043,美国’。如何将地址组件向上构建,然后使其在列表框中显示为一行?有可能吗?

谢谢,

迈克尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 16:15:46

您可以使用一些简单的字符串函数来转换它,而不是从节点打印完整的.Text

首先,声明一个字符串类型变量来表示输出:

代码语言:javascript
复制
Dim StreetName as String

然后,您可以为变量赋值:

代码语言:javascript
复制
StreetName = XMLNode.childNodes(i).baseName & XMLNode.childNodes(i).Text

然后,操纵它:

代码语言:javascript
复制
StreetName = Mid(StreetName, Instr(StreetName, " ")+1)

Mid函数返回从第一个空格后面的位置开始的子字符串,我们使用Instr函数找到该子字符串。然后将其添加到列表框中:

代码语言:javascript
复制
Me.List1.AddItem StreetName

如果您需要检查地址号(有些可能没有地址号码?)然后你就可以这样做:

代码语言:javascript
复制
StreetName = XMLNode.childNodes(i).baseName & XMLNode.childNodes(i).Text
If IsNumeric(Left(StreetName,1)) Then
    StreetName = Mid(StreetName, Instr(StreetName, " ")+1)
End If

Me.List1.AddItem StreetName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26532395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档