2015-05-27 95 views
-1

我在Excel中擁有一組郵政編碼對。我的目標是使用谷歌地圖API或任何其他良好的來源,並獲得這兩個郵政編碼之間的距離。這可能嗎?如果這些數據點位於SQL Server表中,是否有使用SSIS Web服務任務的方法?使用Google Maps API的兩個郵政編碼和Excel中的一組郵政編碼之間的距離

我想了解如何做到最好的一些指針。我查看了Google Distance Matrix API,但明確提到嚴格禁止在非Google地圖用法中使用該API。

預先感謝您指導我如何設計。

+0

這查詢已被回答。我使用了TMH提供的TheAnalystCave網站鏈接上提供的代碼片段。 – Manus

回答

1

分析員洞有一個偉大的寫了關於使用谷歌API的正是這一點:
http://www.analystcave.com/excel-calculate-distances-between-addresses/

Public Function GetDuration(start As String, dest As String) 
    Dim firstVal As String, secondVal As String, lastVal As String 
    firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" 
    secondVal = "&destinations=" 
    lastVal = "&mode=car&language=pl&sensor=false" 
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 
    URL = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal 
    objHTTP.Open "GET", URL, False 
    objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 
    objHTTP.send ("") 
    If InStr(objHTTP.responseText, """duration"" : {") = 0 Then GoTo ErrorHandl 
    tmpVal = Right(objHTTP.responseText, Len(objHTTP.responseText) - InStr(objHTTP.responseText, """duration"" : {") - Len("""duration"" : {")) 
    tmpVal = Right(tmpVal, Len(tmpVal) - InStr(tmpVal, """value"" : ") - Len("""value"" :")) 
    tmpVal = Left(tmpVal, InStr(tmpVal, "}") - 1): tmpVal = Replace(tmpVal, ".", ",") 
    GetDuration = CLng(Replace(tmpVal, ",", "")) 
Exit Function 
ErrorHandl: 
    GetDuration = -1 
End Function 

然後,您可以使用谷歌API來找到更多的參數:
https://developers.google.com/maps/documentation/distancematrix/#JSON

+1

請總結或引用相關部分,以確保鏈接到期時答案仍然有效。 http://stackoverflow.com/help/how-to-answer –

+0

你好TMH8885,你的建議幫了大忙。分析洞穴上的代碼唯一的變化是你應該使用https而不是http,否則它會返回REQUEST DENIED錯誤。感謝您向我指出這個資源。 – Manus

+0

我還建議獲取APi密鑰以跟蹤您的API請求。對我來說非常方便。 – Manus

相關問題