2016-12-25 46 views
-1

我需要從經過谷歌地圖api的下拉列表中選擇城市textbox1textbox2獲取經緯度。我使用C#和ASP .NET Web窗體。獲取經緯度textbox1和textbox2從下拉列表中通過谷歌地圖api在下拉列表中選擇城市webforms asp.net

這是我試過的代碼:

function sayHello() 
{ 

    string url = "https://maps.googleapis.com/maps/api/geocode/json?address=+Dropdownlist1.Text+Dropdownlist2.Text+Dropdownlist3.Text+&sensor=false"); 
    WebRequest request = WebRequest.Create(url); 

    using (WebResponse response = (HttpWebResponse)request.GetResponse()) 
    { 

    using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) 
    { 

     string address = document.getElementById(reader).ToString; 
     float latitude; 
     float longitude; 

     //var geocoder = new google.maps.Geocoder(); 
     latitude = results[0].geometry.location.lat(); 
     longitude = results[0].geometry.location.lng(); 


     document.getElementById("TextBox1").Text = latitude; 
     document.getElementById("TextBox2").Text = longitude; 

    } 
} 

回答

0

這是你如何撥打電話,以獲得谷歌地圖地理編碼JSON響應:

string json = string.Empty; 
    string url = string.Format("https://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=false", HttpUtility.UrlEncode(address)); 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
    using (Stream stream = response.GetResponseStream()) 
    using (StreamReader reader = new StreamReader(stream)) 
    { 
     json = reader.ReadToEnd(); 
    } 

你要記住編碼您的地址字符串,可能包含一些非法字符,這些字符不能在查詢字符串中使用。

地理編碼器響應採用json格式,您可以自行解析或使用一些專爲此設計的工具。在我工作的小提琴我創建了一些C#類基礎上(使用json2csharp.com)JSON響應:

public class Location 
{ 
    public double lat 
    { 
     get; 
     set; 
    } 

    public double lng 
    { 
     get; 
     set; 
    } 
} 

public class Geometry 
{ 
    public Location location 
    { 
     get; 
     set; 
    } 
} 

public class Result 
{ 
    public Geometry geometry 
    { 
     get; 
     set; 
    } 
} 

public class GeocodeResponse 
{ 
    public List<Result> results 
    { 
     get; 
     set; 
    } 
} 

然後我反序列化使用Json.NET JSON序列JSON響應GeocodeResponse。

GeocodeResponse gr = JsonConvert.DeserializeObject<GeocodeResponse>(json); 
Console.WriteLine(string.Format("lat: {0}, long: {1}", gr.results[0].geometry.location.lat, gr.results[0].geometry.location.lng)); 

您可以嘗試的工作fiddle這一點。它是控制檯應用程序,但我相信你可以快速將其轉換爲你的webform應用程序。

此致敬禮!
Krzysztof