2014-09-24 96 views
0

我正在使用Google Maps API,并试图对某个地址进行地址解析。然而,由于某些原因,Google将返回来自整个国家的类似地址,尽管我指定了城市,州和邮编。所以现在我有一个很大的XML响应。如果你在你自己的CF模板中运行下面的代码,你会看到我在说什么。ColdFusion XML解析多个响应

我正在尝试获取“Bakersfield CA”地址的地理编码。但是,由于Google首先返回“Homer,LA”响应,这就是我的代码正在收集的内容。

<cfhttp url="http://maps.googleapis.com/maps/api/geocode/xml?address=327%20BEARDSLEY%20AVE%20&city=Bakersfield&state=CA&zip=93308" method="get" timeout="300">      </cfhttp>  

<cfif Left(CFHTTP.StatusCode, 3) EQ "200">         
    <cfset xmlResponse = XmlParse(CFHTTP.FileContent)> 
    <cfset mylat = xmlResponse.GeocodeResponse.result.geometry.location.lat.xmlText> 
    <cfset mylon = xmlResponse.GeocodeResponse.result.geometry.location.lng.xmlText> 

    #mylat#     
</cfif> 


FOR DEBUGGING 
    <cfoutput> 
    <cfdump var="#xmlResponse#"> 
    </cfoutput> 

回答

2

的谷歌地图地理编码Web服务不支持parameters你给它(市,州,邮编),所以它看到:

327 BEARDSLEY AVE

哪个远未完全指定。

如果你把完整的地址正确的参数(地址),它会给你的结果你期望:(每documentation referenced above

地理编码(纬度/经度支持

http://maps.googleapis.com/maps/api/geocode/xml?address=327%20BEARDSLEY%20AVE,%20Bakersfield,%20CA,%2093308

参数查找)

地理编码请求中的必需参数:

地址 - 您要进行地理编码的地址。 或 组件 - 您希望获取地理编码的组件过滤器。有关更多信息,请参阅组件过滤。如果提供地址,组件过滤器也将被接受为可选参数。在地址解析请求

可选参数:

边界 - 更显着视口偏置地址解析结果在其内的边界框。该参数只会影响地理编码器的结果,而不会完全限制。 (欲了解更多信息,请参阅下面的视口偏差。)

key - 您的应用程序的API密钥。此密钥标识您的应用程序用于配额管理。了解如何从API控制台获取密钥。

语言 - 要返回结果的语言。请参阅支持的域语言列表。请注意,我们经常更新支持的语言,因此此列表可能不完整。如果未提供语言,则地理编码器将尝试尽可能使用发送请求的域的本地语言。

region - 区域代码,指定为ccTLD(“顶级域名”)双字符值。该参数只会影响地理编码器的结果,而不会完全限制。(欲了解更多信息,请参阅下面的区域偏置。)

组件 - 组件过滤器,由管道(|)分隔。每个组件过滤器由一个组件:值对组成,并将完全限制地理编码器的结果。欲了解更多信息,请参阅下面的组件筛选。)

+0

谢谢。鉴于他们自己的文档显示使用城市,州,邮编参数,我无法发现他们不支持城市州邮政编码。 – parker 2014-09-25 13:04:06