2014-10-01 3 views
2

У меня есть запрос геокода, который проходит через несколько адресов в моей базе данных и возвращает широту и долготу, а также другую информацию.Как сохранить информацию о геокодированных адресах в базе данных

foreach(var row in data){ 
     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/geocode/[email protected](row.ADDRESS1)[email protected](row.CITY)[email protected]+CA&key=???apikey???"></script> 
    } 

Который превращается в несколько сотен запросов и дает мои широты и долготы для каждого. Мне нужно взять широту и долготу и сохранить ее в базе данных.

Мне все равно, если он вернет json или xml.

Я не могу найти много информации о том, как это сделать, большая часть информации, которую я нахожу, подвергает сомнению, действительно ли вы вслух делаете это, о чем я уже обращался. Я новичок в программировании в целом, и я, как специально новой для C# и работать с очками API,

ответ

2

Im используя этот код в развозного колл-центр, возможно, это может помочь вам:

   foreach(var row in data) 
       { 

        string strAddr = row.ADDRESS1 + "," + row.CITY; //here you've to write the exact address you want to geo 

        GoogleMapsDll.GeoResponse myCoordenadas = new GoogleMapsDll.GeoResponse(); 
        myCoordenadas = GoogleMapsDll.GoogleMaps.GetGeoCodedResults(strAddr); 

        string strLat = myCoordenadas.Results[0].Geometry.Location.Lat.ToString(); 
        string strLong = myCoordenadas.Results[0].Geometry.Location.Lng.ToString(); 

        System.Threading.Thread.Sleep(2000); //THIS IS AN API LIMITs 

        //this is just an example to update your sql rows, you can use the info where you need 
        using(SqlConnection myConnection = new SqlConnection(yourConnectionString)) 
        { 
         myConnection.Open(); 
         string strQueryUpdate = "UPDATE yourAddressTable SET lat = '" + strLat + "' , lon = '" + strLong + "' " 
          + "WHERE yourId = '" + row.YourId + "' "; 

         SqlCommand myCommandUpdate = new SqlCommand(strQueryUpdate, myConnectionUpdate); 
         myCommandUpdate.ExecuteNonQuery(); 

        } 

       } 

И класс гео код адрес (я взял его из StackOverflow, но не имеют ссылку)

using System.Net; 
using System.Runtime.Serialization; 
using System.Runtime.Serialization.Json; 
using System.Web; 

public class GoogleMapsDll 
{ 
    public class GoogleMaps 
    { 
     /// <summary> 
     /// 
     /// </summary> 
     /// <param name="address"></param> 
     /// <returns></returns> 
     public static GeoResponse GetGeoCodedResults(string address) 
     { 
      string url = string.Format(
        "http://maps.google.com/maps/api/geocode/json?address={0}&region=dk&sensor=false", 
        HttpUtility.UrlEncode(address) 
        ); 
      var request = (HttpWebRequest)HttpWebRequest.Create(url); 
      request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 
      request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(GeoResponse)); 
      var res = (GeoResponse)serializer.ReadObject(request.GetResponse().GetResponseStream()); 
      return res; 
     } 
    } 

    [DataContract] 
    public class GeoResponse 
    { 
     [DataMember(Name = "status")] 
     public string Status { get; set; } 

     [DataMember(Name = "results")] 
     public CResult[] Results { get; set; } 

     [DataContract] 
     public class CResult 
     { 
      [DataMember(Name = "geometry")] 
      public CGeometry Geometry { get; set; } 

      [DataContract] 
      public class CGeometry 
      { 
       [DataMember(Name = "location")] 
       public CLocation Location { get; set; } 

       [DataContract] 
       public class CLocation 
       { 
        [DataMember(Name = "lat")] 
        public double Lat { get; set; } 

        [DataMember(Name = "lng")] 
        public double Lng { get; set; } 
       } 
      } 
     } 

     public GeoResponse() 
     { } 
    } 
} 
+0

мне нужно поместить & Do ключ = «myapikey» в конце запроса HTTP для этого примера? – RyeNyeTheComputerScienceGuy

+0

Если вам нужно меньше 2500 в день, вы не делаете. Проверьте https://developers.google.com/maps/documentation/geocoding/ – paio

+0

Я уверен, что для бесплатного api требуется ключ api, так как api для работы api требует вместо этого параметра клиента и подписи. – RyeNyeTheComputerScienceGuy

Смежные вопросы