Utilizando JSON, WCF et al. con Google geocodificación - ¿es realmente necesario?

StackOverflow https://stackoverflow.com/questions/3786473

  •  05-10-2019
  •  | 
  •  

Pregunta

Tengo un requisito de datos de códigos geográficos utilizando el servicio de geocodificación de Google. servicios de geocodificación de Google no son tan amigable para el consumo a través de .NET como, digamos de Bing (no hay sorpresa) así que mientras yo podía ir a por todas con ContractDataSerializers, WCF, JSON y toda otra pila de acrónimos hay mal cualquier cosa con algo así como el a continuación si todo lo que necesito es, por ejemplo, latitud y longitud a saber.

string url = String.Format("http://maps.google.com/maps/api/geocode/xml?address=blah&region=ie&sensor=false", HttpUtility.UrlEncode(address));

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(url);
XmlNodeList xmlNodeList = xmlDocument.SelectNodes("/GeocodeResponse/result");

if (xmlNodeList != null)
{
   // Do something here with the information
}

Además de una gran cantidad de esfuerzo de desarrollo por adelantado lo que precisamente será el enfoque de otra compra? Estoy muy cómodo con WCF, DataContracts, ServiceContracts etc, pero no puedo ver lo que van a llevar a la mesa aquí ...

¿Fue útil?

Solución

El uso del proyecto de Control GoogleMap en CodePlex: http://googlemap.codeplex.com/

Tiene clase para hacer geocodificación con Google: http: //googlemap.codeplex .com / wikipage? title = Google% 20Geocoder y referringTitle = Documentación .

Otros consejos

Yo usaría XDocument con WebRequest. Después de href="http://www.superstarcoders.com/blogs/posts/geocoding-in-c-sharp-using-google-maps.aspx" ayuda fuerza.

public static GeocoderLocation Locate(string query)
{
    WebRequest request = WebRequest.Create("http://maps.google.com/maps?output=kml&q="
        + HttpUtility.UrlEncode(query));

    using (WebResponse response = request.GetResponse())
    {
        using (Stream stream = response.GetResponseStream())
        {
            XDocument document = XDocument.Load(new StreamReader(stream));

            XNamespace ns = "http://earth.google.com/kml/2.0";

            XElement longitudeElement = document.Descendants(ns + "longitude").FirstOrDefault();
            XElement latitudeElement = document.Descendants(ns + "latitude").FirstOrDefault();

            if (longitudeElement != null && latitudeElement != null)
            {
                return new GeocoderLocation
                {
                    Longitude = Double.Parse(longitudeElement.Value, CultureInfo.InvariantCulture),
                    Latitude = Double.Parse(latitudeElement.Value, CultureInfo.InvariantCulture)
                };
            }
        }
    }

    return null;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top