vb代码将地址编码为latlong [英] vb code to geocode address into latlong
本文介绍了vb代码将地址编码为latlong的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用代码眉,但我总是收到错误'远程服务器返回错误:(403)禁止。'在线'昏暗响应由于HttpWebResponse = request.GetResponse()'。
我用我的钥匙替换了[你的钥匙在这里]( - >是[]必要的吗?)。
任何人都可以提供帮助吗?
私人 Sub Geocode_Click( ByVal sender As System。 对象, ByVal e As System.EventArgs )句柄 Geocode.Click
txtLatLon.Text = GetLatLon(txtAddress.Text)
结束 Sub
公共 功能 GetLatLon( ByVal addr As 字符串)作为 字符串
Dim url 作为 字符串 = http://maps.google.com/maps/geo?output=csv&key= [你的钥匙在这里]& q =& addr
Dim request As System.Net.WebRequest = WebRequest.Create(url)
Dim 响应 As HttpWebResponse = request.GetResponse()
如果 response.StatusCode = HttpStatusCode.OK 那么
Dim ms 作为 新 System.IO.MemoryStream()
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim buffer( 2048 )作为 字节
Dim count As Integer = responseStream.Read(buffer, 0 ,buffer.Length)
while count> 0
ms.Write(buffer, 0 ,count)
count = responseStream .Read(buffer, 0 ,buffer.Length)
结束 while
responseStream.Close()
ms.Close()
Dim responseBytes()< span class =code-keyword> As Byte = ms.ToArray()
Dim encoding As New System.Text.ASCIIEncoding()
Dim coords As String = encoding.GetString(responseBytes)
Dim parts() As 字符串 = coords.Split( ,)
返回 Convert.ToDouble(parts( 2 ))& Convert.ToDouble(parts( 3 ))
结束 如果
返回 没什么
结束 功能
解决方案
found这个(我自己)工作(不要忘记将语言设置'language = nl'改为你想要的那个;)):
' 请参阅解释:
' https://developers.google.com/maps/documentation/geocoding/index
'
公开 功能 GetLatLon( ByVal addr 作为 字符串)作为 < span class =code-keyword> String
尝试
Dim url 作为 字符串 = < span class =code-string> http://maps.googleapis.com/maps/api/geocode/xml?address=& addr& & sensor = false& language = nl
Dim request As System.Net.WebRequest = WebRequest.Create(url)
Dim 响应 As HttpWebResponse = request.GetResponse()
If response.StatusCode = HttpStatusCode.OK 然后
Dim ms As 新 System.IO.MemoryStream()
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim buffer( 2048 ) As 字节
Dim count 作为 Integer = responseStream.Read(buffer, 0 ,buffer.Length)
while 计数> 0
ms.Write(buffer, 0 ,count)
count = responseStream .Read(buffer, 0 ,buffer.Length)
结束 while
responseStream.Close()
ms.Close()
Dim responseBytes()< span class =code-keyword> As Byte = ms.ToArray()
Dim encoding As New System.Text.ASCIIEncoding()
Dim Resp As String = encoding.GetString(responseBytes)
Dim Pos 正如 整数 = InStr(Resp, < lat>) - 1
Dim Nb 作为 整数 = CharCount(Resp, < lat>)
' response / x的结构时间< lat> 50.8469547< / lat> < lng> 3.6013676< / lng>
Dim Coords(Nb, 2 ) As String
Dim Counter As 整数 = 1
直到InStr(Pos,Resp, < lat>,CompareMethod.Text)= 0
Coords(计数器, 1 )= Mid(Resp,InStr(Pos,Resp, < lat>, CompareMethod.Text)+ 5 ,InStr(Pos,Resp, < / lat>,CompareMethod.Text) - (InStr(Pos,Resp, < lat>,CompareMethod.Text)+ 5 ))
Coords(计数器, 2 )= Mid(Resp,InStr(Pos,Resp, < lng>,CompareMethod.Text)+ 5 ,InStr( Pos,Resp, < / lng>,CompareMethod.Text) - (InStr(Pos, Resp, < lng>,CompareMethod.Text)+ 5 ))
Pos = InStr(Pos,Resp, < / lng> ;,CompareMethod.Text)+ 5
Counter = Counter + 1
循环
Resp =
对于计数器= 1 Nb
Resp = Resp& Coords(计数器, 1 )& ,& Coords(计数器, 2 )& ;
下一页
返回 Resp
否则
MsgBox(response.StatusCode.ToString ,MsgBoxStyle.Exclamation, fout)
返回
结束 如果
Catch ex 正如异常
MsgBox(ex.ToString)
返回
结束 尝试
结束 功能
什么是charcount fnction?
Hi ,
I'm trying to use the code brow but i'm always getting the error 'The remote server returned an error: (403) Forbidden.' on the line ' Dim response As HttpWebResponse = request.GetResponse()'.
I replaced [YOUR KEY GOES HERE] with my key (-> are the [ ] necessary?).
anyone can help?
Private Sub Geocode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Geocode.Click
txtLatLon.Text = GetLatLon(txtAddress.Text)
End Sub
Public Function GetLatLon(ByVal addr As String) As String
Dim url As String = "http://maps.google.com/maps/geo?output=csv&key=[YOUR KEY GOES HERE]&q=" & addr
Dim request As System.Net.WebRequest = WebRequest.Create(url)
Dim response As HttpWebResponse = request.GetResponse()
If response.StatusCode = HttpStatusCode.OK Then
Dim ms As New System.IO.MemoryStream()
Dim responseStream As System.IO.Stream = response.GetResponseStream()
Dim buffer(2048) As Byte
Dim count As Integer = responseStream.Read(buffer, 0, buffer.Length)
While count > 0
ms.Write(buffer, 0, count)
count = responseStream.Read(buffer, 0, buffer.Length)
End While
responseStream.Close()
ms.Close()
Dim responseBytes() As Byte = ms.ToArray()
Dim encoding As New System.Text.ASCIIEncoding()
Dim coords As String = encoding.GetString(responseBytes)
Dim parts() As String = coords.Split(",")
Return Convert.ToDouble(parts(2)) & Convert.ToDouble(parts(3))
End If
Return Nothing
End Function
解决方案
found this (myself) to be working (don't forget to change the language setting 'language=nl' to the one you want ;) ):
'see explanation on: 'https://developers.google.com/maps/documentation/geocoding/index ' Public Function GetLatLon(ByVal addr As String) As String Try Dim url As String = "http://maps.googleapis.com/maps/api/geocode/xml?address=" & addr & "&sensor=false&language=nl" Dim request As System.Net.WebRequest = WebRequest.Create(url) Dim response As HttpWebResponse = request.GetResponse() If response.StatusCode = HttpStatusCode.OK Then Dim ms As New System.IO.MemoryStream() Dim responseStream As System.IO.Stream = response.GetResponseStream() Dim buffer(2048) As Byte Dim count As Integer = responseStream.Read(buffer, 0, buffer.Length) While count > 0 ms.Write(buffer, 0, count) count = responseStream.Read(buffer, 0, buffer.Length) End While responseStream.Close() ms.Close() Dim responseBytes() As Byte = ms.ToArray() Dim encoding As New System.Text.ASCIIEncoding() Dim Resp As String = encoding.GetString(responseBytes) Dim Pos As Integer = InStr(Resp, "<lat>") - 1 Dim Nb As Integer = CharCount(Resp, "<lat>") 'structure of response = x times <lat>50.8469547</lat> <lng>3.6013676</lng> Dim Coords(Nb, 2) As String Dim Counter As Integer = 1 Do Until InStr(Pos, Resp, "<lat>", CompareMethod.Text) = 0 Coords(Counter, 1) = Mid(Resp, InStr(Pos, Resp, "<lat>", CompareMethod.Text) + 5, InStr(Pos, Resp, "</lat>", CompareMethod.Text) - (InStr(Pos, Resp, "<lat>", CompareMethod.Text) + 5)) Coords(Counter, 2) = Mid(Resp, InStr(Pos, Resp, "<lng>", CompareMethod.Text) + 5, InStr(Pos, Resp, "</lng>", CompareMethod.Text) - (InStr(Pos, Resp, "<lng>", CompareMethod.Text) + 5)) Pos = InStr(Pos, Resp, "</lng>", CompareMethod.Text) + 5 Counter = Counter + 1 Loop Resp = "" For Counter = 1 To Nb Resp = Resp & Coords(Counter, 1) & "," & Coords(Counter, 2) & ";" Next Return Resp Else MsgBox(response.StatusCode.ToString, MsgBoxStyle.Exclamation, "fout") Return "" End If Catch ex As Exception MsgBox(ex.ToString) Return "" End Try End Function
what is the charcount fnction??
这篇关于vb代码将地址编码为latlong的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文