Tuesday, February 3, 2009

Return Google Maps Coordinates from Street Address

This function will return Google Maps coordinates from a street address by using the Google-provided XML page. I have used regex to parse the data rather than the XML object to get the node(s):

Function GetGeoCoords(ByVal inString as String) As String
   Dim xmlString As String = GetHTML("http://maps.google.com/maps/geo?output=xml&key=abcdefg&q=" & inString, 1)
   Chunks = Regex.Split(xmlString, "coordinates>", RegexOptions.Multiline)
   outString = Replace(Chunks(1), ",0</", "")
End Function

Public Function GetHTML(ByVal sURL As String, ByVal e As Integer) As String
   Dim oHttpWebRequest As System.Net.HttpWebRequest
   Dim sChunk As String
   oHttpWebRequest = (System.Net.HttpWebRequest.Create(sURL))
   Dim oHttpWebResponse As System.Net.WebResponse = oHttpWebRequest.GetResponse()
   oStream = oHttpWebResponse.GetResponseStream
   sChunk = New System.IO.StreamReader(oStream).ReadToEnd()
   oStream.Close()
   oHttpWebResponse.Close()
   If e = 0 Then
      Return Server.HtmlEncode(sChunk)
   Else
      Return Server.HtmlDecode(sChunk)
   End If
End Function

2 comments:

Unknown said...

I will give it a try. Thanks.

crease said...

OK so I tried this and got confused. Im a bit of a VB newbie - the line

Return Server.HtmlEncode(sChunk)

returns an error as 'Name Server is not declared.

Any ideas?