如何在经典 ASP 中使用地理编码 API v3

2024-05-04

想知道是否有人可以帮助我。我正在尝试返回地址的纬度和经度结果。刚接触编码并且陷入困境。以下代码工作正常,直到地理编码从 v2 变为 v3。你能告诉我哪里错了吗?我是否需要新的 v3 密钥或密钥?提前致谢。

<%
Function GetXML(url)
Dim xmlobj
Set xmlobj = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
xmlobj.setTimeouts 30000, 30000, 30000, 30000
xmlobj.Open "GET", url, False
xmlobj.send()
If xmlobj.status = 200 Then
    GetXML = xmlobj.responseXML.xml
Else
    Response.Write "The geocoding server could not be reached."
    Response.End
End If
End Function

address = "30 Dixon, EN76HA"


url="http://maps.google.com/maps/geo?output=xml&key=XXXXXXX &q="&Server.URLEncode(address)






Response.Write "You entered: "&address&"<br />"

xml = GetXML(url) 'Function to return raw XML as text

if InStr(xml,"<coordinates>")>0 then
coords = split(xml,"<coordinates>") 'Get everything after the opening coordinates tag
coords2 = split(coords(1),"</coordinates>") 'Get everything before the ending coordinates tag
coordinatesSplit = split(coords2(0),",") 'split it at the commas
lng = coordinatesSplit(0) 'The first value is the longitude
lat = coordinatesSplit(1) 'The second value is the latitude

Response.Write "The geo-coded coordinates are: "&lat&" "&lng
else
'No coordinates were returned
Response.Write "The address could not be geocoded."
Response.End
end if
%>

如果我在浏览器中访问您的 URL,您的代码无法正常工作,因为 Google Geocoding API v3 的 URL 不同;

我得到以下回复;

<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0">
  <Response>
    <Status>
      <code>610</code>
      <request>geocode</request>
      <error_message>The Geocoding API v2 has been turned down on September 9th, 2013. The Geocoding API v3 should be used now. Learn more at https://developers.google.com/maps/documentation/geocoding/</error_message>
    </Status>
  </Response>
</kml>

你的代码永远找不到<coordinates>元素,因此每次都会失败。


解决方案

根据我用于此确切目的的代码,我对您的源代码进行了一些细微的更改。如果您保持在 google 地图 api 设置的使用限制内,则实际上不需要传递密钥,但如果您已经有 api 密钥,则只需将其添加到url多变的。

<%
Function GetXML(addr)
  Dim objXMLDoc, url, docXML, lat, lng, mapref

  'URL for Google Maps API - Doesn't need to stay here could be stored in a 
  'config include file or passed in as a function parameter.
  url = "http://maps.googleapis.com/maps/api/geocode/xml?address={addr}&sensor=false"
  'Inject address into the URL
  url = Replace(url, "{addr}", Server.URLEncode(addr))

  Set objXMLDoc = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
  objXMLDoc.setTimeouts 30000, 30000, 30000, 30000
  objXMLDoc.Open "GET", url, False
  objXMLDoc.send()

  If objXMLDoc.status = 200 Then
    Set docXML = objXMLDoc.responseXML
    'Check the response for a valid status
    If UCase(docXML.documentElement.selectSingleNode("/GeocodeResponse/status").Text) = "OK" Then
      lat = docXML.documentElement.selectSingleNode("/GeocodeResponse/result/geometry/location/lat").Text
      lng = docXML.documentElement.selectSingleNode("/GeocodeResponse/result/geometry/location/lng").Text
      'Create array containing lat and long
      mapref = Array(lat, lng)
    Else
      mapref = Empty
    End If
  Else
    mapref = Empty
  End If

  'Return array
  GetXML = mapref
End Function

Dim coords, address

address = "30 Dixon, EN76HA"
coords = GetXML(address)
'Do we have a valid array?
If IsArray(coords) Then
  Response.Write "The geo-coded coordinates are: " & Join(coords, ",")
Else
  'No coordinates were returned
  Response.Write "The address could not be geocoded."
End If
%>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在经典 ASP 中使用地理编码 API v3 的相关文章

随机推荐

  • 弹性项目的等高子项

    我在创建 Flexbox 响应式网格时遇到问题 希望有人能给我指出正确的方向 我想要所有的 blockdiv 的高度相等 并且 bottomdiv 绝对定位到底部 这实际上在当前的解决方案中有效 但是当 的时候h2标题太长 达到了2行 我想
  • 如何定义基于标签的组织结构?

    原标题 有没有办法在基于标签的组织方法上强制建立关系结构 我有一些实体 它们有一系列属性 一些属性影响实体可以具有的其他属性 许多属性被组织成组 并且有时实体被要求具有来自某些组的一定数量的属性 或者可能具有来自某些组的一定范围的属性 有没
  • 如何通过j2me api解析包含负数的字符串?

    我有一个带有数字的字符串 我必须解析这个字符串并将这些数字存储在 int float 等中 相应地 String str 100 2 0 100 19 99 0 我可以这样做Integer parseInt and Float parseF
  • 纯函数可以异步吗?

    在浏览纯函数的定义时 它通常定义有两个特征 1 给定相同的输入应该产生相同的输出 2 不应产生任何副作用 这是否也意味着纯函数不应该是异步的 如果不是 怎么会这样 如果是的话 我很想看到 JavaScript 中异步纯函数的一些示例 是的
  • 在 Haskell 中将 Maybe Int 转换为 Int

    我正在编写以下代码 并希望找到框字符串中数字的索引 所以我用了findIndex但它返回Maybe Int值 而我只想要Int value 我怎样才能转换Maybe Int to Int值或者有什么方法可以提取Int from Maybe
  • 如何获取 WPF 用户控件可见部分的大小?

    我有一个由标签和文本框组成的用户控件 它位于滚动查看器内 我正在其顶部绘制一个装饰器 并且需要将装饰器的大小调整为控件的可见大小 如何获得控件的可见大小 在下图中 绿色矩形是装饰器 正如您所看到的 它被绘制在右侧的滚动条上 是否可以获得渲染
  • 如何将 lambda (c++11) 传递到模板化函数中?

    我正在 gcc 4 6 2 中使用 lambda 函数 并且想要实现一个模板化的 map 函数 如下所示 template
  • DotNet Core 控制台应用程序:应用程序依赖项清单中指定的程序集

    我只是尝试在 Windows Server 2012 R2 上运行 DotNet Core 控制台应用程序 但我不断收到此错误 错误 找不到应用程序依赖项清单 Application deps json 中指定的程序集 包 Microsof
  • 我如何不在我的 xslt 代码中重复重复的逻辑?

    编写此代码的更好方法是什么
  • 检查 Gmail API 的特定用户帐户配额使用情况

    我正在使用 Gmail API NET 客户端发送 接收电子邮件 最近 我开始在某些 Gmail 帐户发送 接收电子邮件时收到此消息的异常 Google Apis Requests RequestError User rate limit
  • 使用 Bing 地图和 OpenStreetMap 进行免费 Silverlight 地图绘制?

    我最近读过本文 http pietschsoft com post 2009 11 13 Prototype OpenStreetMap Silverlight Control using Bing Maps SDK and DeepEar
  • SQL 连接中的多个条件

    如何指定多个条件SQL加入 我知道A key B key除此之外是强制性的 以下对于指定多个条件是否正确SQL ON A key B key and or cond1 and or cond2 etc OR ON A key B key w
  • 什么时候必须将 XPath 属性设置为 XML DOM 对象?

    例如 Set objXML CreateObject Microsoft XMLDOM objXML async False objXML validateOnParse False objXML resolveExternals Fals
  • 我应该在 grails 应用程序中的哪里放置瞬态域类?

    我应该在 grails 应用程序中的哪里放置瞬态域类 即我有一个Action将被传递和使用但从未保存的类 这应该是在grails app domain文件夹 还是其他地方 grails app domain用于持久域类 但并非所有应用程序的
  • 如何在 k 均值中使用欧氏距离以外的不同距离公式

    我正在处理纬度经度数据 我必须根据两点之间的距离进行聚类 现在两个不同点之间的距离是 ACOS SIN lat1 SIN lat2 COS lat1 COS lat2 COS lon2 lon1 6371 我想在 R 中使用 k 均值 有什
  • 从中间部分匹配完成建议elasticsearch

    我有一个名为搜索建议具有以下 search suggest type completion analyzer simple payloads true preserve separators false preserve position
  • 算法的最佳、最差和平均情况运行时间是多少?

    算法的最佳 最差和平均情况运行时间是多少 用最简单的术语来说 对于输入大小为n 最好的情况 最快完成时间 选择最佳输入 例如 排序算法的最佳情况是已经排序的数据 最坏的情况下 完成最慢的时间 选择了消极的输入 例如 排序算法的最坏情况可能是
  • JFreeChart:如何在 y 轴上显示小时格式

    我找不到如何修改 y 轴的标签 现在 我将 TimeSeries 与 MINUTE 类一起使用 然后将 TimeSeries 插入数据集中 它看起来像这样 final TimeSeries s1 new TimeSeries Importa
  • 设置缩放 QGraphicsItem 的变换点

    我这里有个问题 在给定的代码中 动画和转换工作得很好 但是 我想要设置变换点 根据我的说法 我必须设置 setTransformationOriginPoint item boundingRect center 然而 看起来转换是从左上角开
  • 如何在经典 ASP 中使用地理编码 API v3

    想知道是否有人可以帮助我 我正在尝试返回地址的纬度和经度结果 刚接触编码并且陷入困境 以下代码工作正常 直到地理编码从 v2 变为 v3 你能告诉我哪里错了吗 我是否需要新的 v3 密钥或密钥 提前致谢