Ho un servizio WCF in C#. Nel client di chiamata del servizio invia un nome di città. Voglio convertire il nome della città in latitudini e longitudini e memorizzarlo nel database in base ai dati demografici. Sto pianificando di utilizzare l'API di Google per implementare le funzionalità di cui sopra. Ho ottenuto una chiave API da Google e il suo tipo di 'account di servizio'. SO ora Come posso ottenere la latitudine e la longitudine usando quali API? Devo installare qualche SDK o qualsiasi servizio REST lo farà?C# - Come trovare latitudine e longitudine usando C#
risposta
Se si desidera utilizzare l'API di Google Maps dare un'occhiata al loro API REST, non è necessario installare un API di Google Maps è sufficiente inviare una richiesta come
http://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false
e si otterrà una risposta XML.
Per ulteriori informazioni un'occhiata a
https://developers.google.com/maps/documentation/geocoding/index#GeocodingRequests
Si potrebbe provare il pacchetto NuGet GoogleMaps.LocationServices, o solo rotazione del suo source code. Utilizza l'API REST di Google per ottenere lat/long per un dato indirizzo e viceversa, senza la necessità di una chiave API.
È usare in questo modo:
public static void Main()
{
var address = "Stavanger, Norway";
var locationService = new GoogleLocationService();
var point = locationService.GetLatLongFromAddress(address);
var latitude = point.Latitude;
var longitude = point.Longitude;
// Save lat/long values to DB...
}
C'è qualche limite a questo? In prima risposta, Google ha detto chiaramente che non può usare legalmente tranne Google Maps e ha qualche limite specifico sul numero di richieste. – MaxRecursion
Lo stesso limite della risposta sopra si applica a questo. È solo un wrapper C# attorno all'API REST. Vedi [il codice sorgente] (https://github.com/sethwebster/GoogleMaps.LocationServices/blob/master/GoogleMaps.LocationServices/GoogleLocationService.cs#L14) – khellang
Questo mi ha risparmiato ore di analisi dell'XML. +1, questa è una soluzione elegante !! – TheOptimusPrimus
È possibile passare l'indirizzo url in particolare .. e ottenere latitudine e longitudine nel valore di ritorno dt (DataTable)
string url = "http://maps.google.com/maps/api/geocode/xml?address=" + address+ "&sensor=false";
WebRequest request = WebRequest.Create(url);
using (WebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
DataSet dsResult = new DataSet();
dsResult.ReadXml(reader);
DataTable dtCoordinates = new DataTable();
dtCoordinates.Columns.AddRange(new DataColumn[4] { new DataColumn("Id", typeof(int)),
new DataColumn("Address", typeof(string)),
new DataColumn("Latitude",typeof(string)),
new DataColumn("Longitude",typeof(string)) });
foreach (DataRow row in dsResult.Tables["result"].Rows)
{
string geometry_id = dsResult.Tables["geometry"].Select("result_id = " + row["result_id"].ToString())[0]["geometry_id"].ToString();
DataRow location = dsResult.Tables["location"].Select("geometry_id = " + geometry_id)[0];
dtCoordinates.Rows.Add(row["result_id"], row["formatted_address"], location["lat"], location["lng"]);
}
}
return dtCoordinates;
}
ma ho bisogno di
/*Ready to use code : simple copy paste GetLatLong*/
public class AddressComponent
{
public string long_name { get; set; }
public string short_name { get; set; }
public List<string> types { get; set; }
}
public class Northeast
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Southwest
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Bounds
{
public Northeast northeast { get; set; }
public Southwest southwest { get; set; }
}
public class Location
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Northeast2
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Southwest2
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Viewport
{
public Northeast2 northeast { get; set; }
public Southwest2 southwest { get; set; }
}
public class Geometry
{
public Bounds bounds { get; set; }
public Location location { get; set; }
public string location_type { get; set; }
public Viewport viewport { get; set; }
}
public class Result
{
public List<AddressComponent> address_components { get; set; }
public string formatted_address { get; set; }
public Geometry geometry { get; set; }
public string place_id { get; set; }
public List<string> types { get; set; }
}
public class RootObject
{
public List<Result> results { get; set; }
public string status { get; set; }
}
public static RootObject GetLatLongByAddress(string address)
{
var root = new RootObject();
var url =
string.Format(
"http://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=true_or_false", address);
var req = (HttpWebRequest)WebRequest.Create(url);
var res = (HttpWebResponse)req.GetResponse();
using (var streamreader=new StreamReader(res.GetResponseStream()))
{
var result = streamreader.ReadToEnd();
if (!string.IsNullOrWhiteSpace(result))
{
root = JsonConvert.DeserializeObject<RootObject>(result);
}
}
return root;
}
/* Call This*/
var destination_latLong = GetLatLongByAddress(um.RouteDestination);
var lattitude =Convert.ToString(destination_latLong.results[0].geometry.location.lat, CultureInfo.InvariantCulture);
var longitude=Convert.ToString(destination_latLong.results[0].geometry.location.lng, CultureInfo.InvariantCulture);
Nel mio caso, la mappa di Google fornisce il risultato per l'indirizzo e questo metodo fornisce un valore nullo per il risultato lat/long, quale potrebbe essere il problema? –
cos 'questo metodo non funzionerà con lat/long –
Utilizza questa API per Geocoding inverso .: http://maps.google.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=false –
- 1. C# alba/tramonto con la latitudine/longitudine
- 2. Ottieni latitudine longitudine da un indirizzo C#
- 3. Latitudine/Longitudine e metri
- 4. C# - LINQ - distanza più breve con latitudine e longitudine GPS
- 5. iphone google maps - direzione usando latitudine e longitudine
- 6. Ottieni latitudine e longitudine automaticamente usando php, API
- 7. per latitudine/longitudine
- 8. Come trovare la posizione più vicina usando latitudine e longitudine dal database sql?
- 9. Confronto di due posizioni usando Longitudine e Latitudine
- 10. C# - Ottieni paese da latitudine/longitudine senza API
- 11. ritrovamento latitudine e longitudine utilizzando la distanza
- 12. Impostazione tabella latitudine e longitudine di MySQL
- 13. Ottenere longitudine e latitudine simili dal database
- 14. Latitudine e longitudine basate sul codice postale
- 15. MKCoordinateSpanMake: perché specificare longitudine e latitudine delta?
- 16. Stringa a latitudine e longitudine CL
- 17. Ottenere latitudine e longitudine dall'indirizzo in android
- 18. come ottenere la posizione attuale in latitudine e longitudine in c obiettivo
- 19. ottenere latitudine e longitudine utilizzando codice postale
- 20. Widget latitudine/longitudine per pointfield?
- 21. pacchetto rgdal latitudine/longitudine -> UTM
- 22. trasformano longitudine latitudine in metri
- 23. ottenere latitudine e longitudine come indicato per l'opuscolo
- 24. Nord est verso latitudine longitudine
- 25. Come posso convertire le coordinate in latitudine e longitudine?
- 26. Come convertire latitudine o longitudine in metri?
- 27. Come convertire latitudine longitudine in CLLocationCoordinate2D
- 28. Come recuperare latitudine e longitudine tramite l'API di Google Maps?
- 29. Completamento automatico di Google Places: come ottenere Latitudine e Longitudine?
- 30. come convertire da longitudine e latitudine in paese o città?
può voi mostra come analizzare l'XML? che mal di testa! – TheOptimusPrimus
Se si desidera JSON, è possibile utilizzare http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View ,+CA&sensor=false – hriziya
Incredibile e molto utile –