Über die Yahoo-API mittels des Map-Services kann man auf einfache Art und Weise über die Postleitzahl die Geodaten (z.B. Längen- und Breitengrad) ermitteln. Es bietet sich stets an, diese Informationen direkt nach Informationsgewinnung (z.B. Person wird im System erfasst) in einer Datenbank bei dem entsprechenden Objekt abzuspeichern. Dann kann man diese Geodaten später effizienter für andere Services (z.B. Marker je Person auf Google Map) nutzen.
Die Appikation-ID (Parameter appid) kann über http://developer.yahoo.com/wsregapp/ generiert werden.
1: public static Address GetAddressByZip(string zip)
2: {
3: Address newAddress = new Address();
4: // Get XML document
5: XmlTextReader reader =
6: new XmlTextReader("http://local.yahooapis.com/MapsService/V1/geocode?appid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&state=Germany&zip=" + zip);
7: // Whitespace
8: reader.WhitespaceHandling = WhitespaceHandling.Significant;
9: // Report Node Values
10: while (reader.Read())
11: {
12: if (reader.Name.ToString() == "Address")
13: newAddress.Street = reader.ReadString().ToString();
14: if (reader.Name.ToString() == "City")
15: newAddress.City = reader.ReadString().ToString();
16: if (reader.Name.ToString() == "State")
17: newAddress.State = reader.ReadString().ToString();
18: if (reader.Name.ToString() == "Zip")
19: newAddress.Zip = reader.ReadString().ToString();
20: if (reader.Name.ToString() == "Country")
21: newAddress.Country = reader.ReadString().ToString();
22: if (reader.Name.ToString() == "Latitude")
23: newAddress.Lat = reader.ReadString().ToString();
24: if (reader.Name.ToString() == "Longitude")
25: newAddress.Long = reader.ReadString().ToString();
26: }
27: return newAddress;
28: }
Keine Kommentare:
Kommentar veröffentlichen