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

Get Google Maps Coordinates from URL

This function will parse out the Google Maps coordinates from a Google Maps link url like this one: http://maps.google.com/?ie=UTF8&ll=43.068888,-87.978516&spn=23.565589,33.925781&t=h&z=5. The coordinates in this URL are 43.068888,-87.978516.

Public Function GetGeoCoords(ByVal inString As String) As String
   Dim Chunks As String()
   Dim outString As String = ""
   Chunks = Regex.Split(inString, "&")
   For Each s As String In Chunks
      If InStr(s, "ll") > 0 Then outString = s
   Next
   Return Replace(Replace(outString, "sll=", ""), "ll=", "")
End Function