Your code is not working because the URL is different for the Google Geocoding API v3, if I go to your URL in browser;
http://maps.google.com/maps/geo?output=xml&q=30%20Dixon,%20EN76HA
I get the following response;
<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<Status>
<code>610</code>
<request>geocode</request>
<error_message>The Geocoding API v2 has been turned down on September 9th, 2013. The Geocoding API v3 should be used now. Learn more at https://developers.google.com/maps/documentation/geocoding/</error_message>
</Status>
</Response>
</kml>
Your code will never find the <coordinates>
element and so will fail every time.
The solution
Based on code I've used for this exact purpose I've made a few minor changes to your source. You don't actually need to pass a key if you stay within the limits on usage set up by the google maps api but if you have a api key already then just add it into the url
variable.
<%
Function GetXML(addr)
Dim objXMLDoc, url, docXML, lat, lng, mapref
'URL for Google Maps API - Doesn't need to stay here could be stored in a
'config include file or passed in as a function parameter.
url = "http://maps.googleapis.com/maps/api/geocode/xml?address={addr}&sensor=false"
'Inject address into the URL
url = Replace(url, "{addr}", Server.URLEncode(addr))
Set objXMLDoc = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
objXMLDoc.setTimeouts 30000, 30000, 30000, 30000
objXMLDoc.Open "GET", url, False
objXMLDoc.send()
If objXMLDoc.status = 200 Then
Set docXML = objXMLDoc.responseXML
'Check the response for a valid status
If UCase(docXML.documentElement.selectSingleNode("/GeocodeResponse/status").Text) = "OK" Then
lat = docXML.documentElement.selectSingleNode("/GeocodeResponse/result/geometry/location/lat").Text
lng = docXML.documentElement.selectSingleNode("/GeocodeResponse/result/geometry/location/lng").Text
'Create array containing lat and long
mapref = Array(lat, lng)
Else
mapref = Empty
End If
Else
mapref = Empty
End If
'Return array
GetXML = mapref
End Function
Dim coords, address
address = "30 Dixon, EN76HA"
coords = GetXML(address)
'Do we have a valid array?
If IsArray(coords) Then
Response.Write "The geo-coded coordinates are: " & Join(coords, ",")
Else
'No coordinates were returned
Response.Write "The address could not be geocoded."
End If
%>