This is google api which is used to get lat long of address directly. it return XML data .
http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=%22%20+%20HttpContext.Current.Server.UrlEncode(2000,Town%20Center%20,48075,Southfield,MI,USA);
CS code
LatLng latLong = GoogleMaps.GetLatLong(address.ToString().TrimEnd(','));
if (latLong.Latitude != 0 && latLong.Longitude != 0)
{
txtLatitude.Text = latLong.Latitude.ToString();
txtLongitude.Text = latLong.Longitude.ToString();
}
create a class and past this code
/// <summary>
/// Perform a geocode lookup of an address
/// </summary>
/// <param name="addr">The address in CSV form line1, line2, postcode</param>
/// <param name="output">CSV or XML</param>
/// <returns>LatLng object</returns>
public static LatLng GetLatLong(string addr)
{
//var url = "http://maps.google.co.uk/maps/geo?output=csv&key=" +
//var url = "http://maps.google.com/maps/geo?output=csv&key=" +
// It can return xml with json if required.
var url = "http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&address=" + HttpContext.Current.Server.UrlEncode(addr);//=1600+Amphitheatre+Parkway,+Mountain+View,+CA
//this.API_KEY + "&q=" + HttpContext.Current.Server.UrlEncode(addr);
var request = WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
var ms = new MemoryStream();
var responseStream = response.GetResponseStream();
var buffer = new Byte[2048];
int count = responseStream.Read(buffer, 0, buffer.Length);
while (count > 0)
{
ms.Write(buffer, 0, count);
count = responseStream.Read(buffer, 0, buffer.Length);
}
responseStream.Close();
ms.Close();
var responseBytes = ms.ToArray();
var encoding = new System.Text.ASCIIEncoding();
string coords = encoding.GetString(responseBytes);
//string[] parts = coords.Split(',');
//return new LatLng(
// Convert.ToDouble(parts[2]),
// Convert.ToDouble(parts[3]));
return GetLatLongFromXML(coords);
}
return null;
}
private static LatLng GetLatLongFromXML(string xmlInput)
{
//string latLong = string.Empty;
XPathNavigator nav;
XPathDocument docNav;
XPathNodeIterator NodeIter;
String strExpressionLat;
String strExpressionLng;
StringReader reader = new StringReader(xmlInput);
docNav = new XPathDocument(reader);
nav = docNav.CreateNavigator();
// This expression uses standard XPath syntax.
strExpressionLat = "/GeocodeResponse//location/lat/text()";
strExpressionLng = "/GeocodeResponse//location/lng/text()";
//string latitude = nav.Evaluate(strExpressionLat).ToString();
//string longitude = nav.Evaluate(strExpressionLng).ToString();
double lat = 0.0;
double lng = 0.0;
NodeIter = (XPathNodeIterator)nav.Evaluate(strExpressionLat);
if (NodeIter.MoveNext())
{
double.TryParse(NodeIter.Current.Value, out lat);
}
NodeIter = (XPathNodeIterator)nav.Evaluate(strExpressionLng);
if (NodeIter.MoveNext())
{
double.TryParse(NodeIter.Current.Value, out lng);
}
//double.TryParse(oString(), out lat);
//double.TryParse(nav.Evaluate(strExpressionLng).ToString(), out lng);
//string str=string.Empty;
//while (NodeIter.MoveNext())
//{
// str += "," + NodeIter.Current.Value;
//};
//return latitude + "," + longitude;
return new LatLng(lat, lng);
}