2016-11-12 2 views
-2
   string locationName = Console.ReadLine(); 
       string url = "https://www.google.com/#q=latitude+and+longitude+" + locationName; 

       HtmlWeb web = new HtmlWeb(); 
       HtmlDocument doc = web.Load(url); 
       HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@class='_XWk']"); 
       string res = rateNode.InnerText; 
       Console.WriteLine(res); 

Я использую приведенный выше код, чтобы получить определенное местоположение из Google и скопировать текстовое поле, отображающее широту и долготу в строку res. Каждый раз, когда я запускаю код, я получаю исключение nullReferenceException.Назначить div с сайта на строку

И как я могу разделить строку на две строки только с координатами?

http://imgur.com/a/7useZ

String res = "34.0522° N, 118.2437° W" в String res1 = "34.0522" и String res2 = "118.2437"

Заранее спасибо

ответ

1

Вы можете использовать Google Map API геокодирования. Этот API отправит вам Json-файл. Как это с newtonsoft библиотеки Json:

String fileName = "LosAngeles"; 
    WebRequest webRequest = WebRequest.Create("http://maps.google.com/maps/api/geocode/json?address=" + fileName); 
    WebResponse response = webRequest.GetResponse(); 
    using (Stream responseStream = response.GetResponseStream()) 
    { 
     StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); 
     String json = reader.ReadToEnd(); 
     JObject jsonObject = JObject.Parse(json); 
     String lat = (string)jsonObject["results"][0]["geometry"]["location"]["lat"]; 
     String lng = (string)jsonObject["results"][0]["geometry"]["location"]["lng"]; 
     Console.WriteLine(lat + " : " + lng); 

    } 
+0

Огромное вам спасибо, он, наконец, работает. –

0

Это будет трудно, потому что содержание вы ищете не в HTML-код ссылки: https://www.google.com/#q=latitude+and+longitude+Paris

Это выглядит как ajax, впрыснутый en закодированный от: https://www.google.com/search?q=latitude+and+longitude+paris&bav=on.2,or.r_cp.&cad=b&fp=1&biw=1920&bih=677&dpr=1&tch=1&ech=1&psi=

\\x3cdiv class\\x3d\\x22_XWk\\x22\\x3e48.8566\\xb0 N, 2.3522\\xb0 E\\x3c\/div\\x3e 

Лучший способ получить долготу и широту для города, чтобы использовать Google Map API:

https://maps.googleapis.com/maps/api/geocode/json?address=Paris

0

простой способ установить библиотеку из NuGet или записи в Package Manager Console

Install-Package GoogleMaps.LocationServices 

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

static void Main(string[] args) 
     { 
      string locationName = Console.ReadLine(); 

      var location = new GoogleLocationService(); 
      var point = location.GetLatLongFromAddress(locationName); 

      Console.WriteLine(point.Latitude); 
      Console.WriteLine(point.Longitude); 
      Console.Read(); 

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