Citat:
Ursprungligen postat av Kristoffersen
Vad bra jag skull just ställa den frågan! Men jag undrar också om det inte finns något API för .Net som är mer eller mindre halvfärdigt?
|
Detta är en jag skrev för länge sen men borde nog fungera, jag har lämnat kvar enumsen , de används inte just i detta exempel
Kod:
public class GoogleMaps
{
public static GeoObject GetCoordinates(string address, string gMapKey)
{
WebClient client = new WebClient();
Address = HttpUtility.UrlEncode(Address);
GeoObject obj = new GeoObject();
Uri uri = new Uri(String.Format("http://maps.google.com/maps/geo?q={0}&output=csv&key={1}", address, gMapKey));
string geocodeInfo = client.DownloadString(uri);
string[] geoValues = geocodeInfo.Split(',');
if (geoValues.Length > 0)
{
obj.StatusCode = Convert.ToInt32(geoValues[0]);
obj.Accuracy = Convert.ToInt32(geoValues[1]);
obj.Latitude = Convert.ToDouble(geoValues[2], CultureInfo.GetCultureInfo("en-US"));
obj.Longitude = Convert.ToDouble(geoValues[3], CultureInfo.GetCultureInfo("en-US"));
}
return obj;
}
}
public class GeoObject
{
public enum GoogleAccuracyTypes
{
UNKNOWN_LOCATION = 0,
COUNTRY_LEVEL = 1,
REGION_LEVEL = 2,
SUB_REGION_LEVEL = 3,
TOWN_LEVEL = 4,
ZIP_CODE_LEVEL = 5,
STREET_LEVEL = 6,
INTERSECTION_LEVEL = 7,
ADDRESS_LEVEL = 8,
PREMISE_LEVEL = 9
}
public enum GoogleStatusCodeTypes
{
G_GEO_SUCCESS = 200,
G_GEO_BAD_REQUEST = 400,
G_GEO_SERVER_ERROR = 500,
G_GEO_MISSING_QUERY = 601,
G_GEO_UNKNOWN_ADDRESS = 602,
G_GEO_UNAVAILABLE_ADDRESS = 603,
G_GEO_UNKNOWN_DIRECTIONS = 604,
G_GEO_BAD_KEY = 610,
G_GEO_TOO_MANY_QUERIES = 620,
}
public int Accuracy { get; set; }
public int StatusCode { get; set; }
public double Longitude { get; set; }
public double Latitude { get; set; }
}