Here's what you need for google maps:
using System;
using System.IO;
using System.Net;
using System.Xml;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Globalization;
namespace Geocoders
{
public partial class GoogleGeocoder
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void GetGoogleGeocode(string address, out double latitude, out double longitude, out double range)
{
Stream stream = null;
XmlDocument doc;
HttpWebRequest req;
string text = "";
try
{
req = (HttpWebRequest)WebRequest.Create("http://maps.google.com/maps?output=kml&q=" + address);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
text = sr.ReadToEnd();
sr.Close();
if (String.IsNullOrEmpty(text))
{
latitude = 0;
longitude = 0;
range = 0;
}
else
{
doc = new XmlDocument();
doc.LoadXml(text);
XmlNodeList longitudes = doc.GetElementsByTagName("longitude");
XmlNodeList latitudes = doc.GetElementsByTagName("latitude");
XmlNodeList ranges = doc.GetElementsByTagName("range");
NumberFormatInfo NFormat = new NumberFormatInfo();
NumberFormatInfo NFormatInt = new NumberFormatInfo();
NFormat.NumberDecimalSeparator = ".";
double.TryParse(latitudes[0].InnerText, NumberStyles.Float, NFormat, out latitude);
double.TryParse(longitudes[0].InnerText, NumberStyles.Float, NFormat, out longitude);
double.TryParse(ranges[0].InnerText, NumberStyles.Float, NFormat, out range);
}
}
catch
{
text = null;
latitude = 0;
longitude = 0;
range = 0;
}
finally
{
}
}
}
}