2014-09-24 99 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