我在C#中有一個類庫。從那裏我必須撥打穀歌服務&獲取緯度&經度。如何從C#代碼調用Google地理編碼服務
我知道如何在頁面上使用AJAX,但我想直接從我的C#類文件調用Google地理編碼服務。
有沒有辦法做到這一點或有任何其他服務,我可以使用這個。
我在C#中有一個類庫。從那裏我必須撥打穀歌服務&獲取緯度&經度。如何從C#代碼調用Google地理編碼服務
我知道如何在頁面上使用AJAX,但我想直接從我的C#類文件調用Google地理編碼服務。
有沒有辦法做到這一點或有任何其他服務,我可以使用這個。
你可以做這樣的事情:
string address = "123 something st, somewhere";
string requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address));
WebRequest request = WebRequest.Create(requestUri);
WebResponse response = request.GetResponse();
XDocument xdoc = XDocument.Load(response.GetResponseStream());
XElement result = xdoc.Element("GeocodeResponse").Element("result");
XElement locationElement = result.Element("geometry").Element("location");
XElement lat = locationElement.Element("lat");
XElement lng = locationElement.Element("lng");
你也想驗證響應狀態和捕捉任何WebExceptions。看看Google Geocoding API。
什麼是locationElement? – 2013-04-29 09:32:50
我留下了一條線,編輯它。 – 2013-04-29 09:37:02
確保添加'使用System.Xml.Linq;'(和對應的引用,如果缺少 - System.Xml.Linq.dll)。 – 2015-03-12 18:15:45
您可以調用Web服務並使用json/xml響應。
這將返回一個JSON響應,你可以工作。
正如你可以閱讀使用條款,你只允許使用他們的網絡服務,如果你顯示谷歌地圖。
在這裏你可以找到有關該服務的所有信息:https://developers.google.com/maps/documentation/geocoding/
要了解如何處理JSON響應,看看這個話題:Google Maps v3 geocoding server-side
編輯: 我剛剛發現這篇文章:http://www.codeproject.com/Tips/505361/Google-Map-Distance-Matrix-and-Geocoding-API-V3-we
我沒有測試這一點,但也許它爲你工作:)
編輯2:該代碼項目的例子似乎並沒有工作:(在那裏提到的url總是返回相同的,無論輸入什麼地址點...
但是,你應該嘗試使用JSON或XML結果,因爲這是我想說的最佳做法。
我沒有評論的聲望,但只是想說,Chris Johnsons的代碼就像一個魅力。對於任何愚蠢的我,該組件是:
using System.Net;
using System.Xml.Linq;
不知道程序集並不愚蠢,很多人都明白有人發佈這個 – 2016-05-27 01:55:32
您也可以使用它往往與Asp.Net的Web API或Asp.Net 5.0使用HttpClient的類。
你也有一個免費的http狀態碼,asyn/await編程模型和HttpClient的異常處理很容易。
var address = "paris, france";
var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address));
using (var client = new HttpClient())
{
var request = await client.GetAsync(requestUri);
var content = await request.Content.ReadAsStringAsync();
var xmlDocument = XDocument.Parse(content);
}
這可能不是很多,但我只是想在@克里斯約翰遜代碼一個改進,如果你只是想獲得的緯度和經度值雙形式克里斯 - 約翰遜的VAR緯度和VAR LNG具有價值用這種格式< lat> ... number ...</LAT>
所以,如果你傳遞值是一個字符串得到的數值,你必須對這個答案做這樣
double latitude = Double.Pars(lat.Value)
double longitude = Double.Pars(lng.Value)
這可能有點爲時已晚,但對於那些仍然得到這裏尋找一種簡單的方式來使用谷歌地理編碼API,我寫了這個簡單的nugget called Guigle API,它可以這樣使用:
GoogleGeocodingAPI.GoogleAPIKey = "YOUR API KEY";
AddressResponse result = await GoogleGeocodingAPI.SearchAddressAsync("100 Market St, Southbank");
OR
var result = await GoogleGeocodingAPI.GetCityFromCoordinatesAsync(11.1111, 22.2222);
var city = result.Item1;
var country = result.Item3;
我喜歡的一件事是,您可以從API響應中獲得完整的對象,因此您可以輕鬆訪問所有內容,並且可以使用Linq和其他集合幫助器輕鬆地從中獲取數據。例如,對於地址,您將這些類型多:
public class AddressResponse
{
public List<Address> Results { get; set; }
public string Status { get; set; }
}
public class Address
{
public List<AddressComponent> AddressComponents { get; set; }
public string FormattedAddress { get; set; }
public Geometry Geometry { get; set; }
public string PlaceId { get; set; }
public List<string> Types { get; set; }
}
所以,你可以這樣做:
(...)
var state = addressComponentes.FirstOrDefault(r => r.Types.Contains(AddressType.administrative_area_level_1.ToString()))?.ShortName;
該方法易於使用,並有詳細的解釋總結。
您可以用的NuGet命令安裝安裝,包裝Easyforce.GuigleAPI
如果你只是想在源代碼中的項目可以用GitHub。隨時爲您的貢獻PR =)
這是一個古老的問題。但是今天我有同樣的問題,以及與此想出了一個解決方案:https://github.com/chadly/Geocoding.net
IGeocoder geocoder = new GoogleGeocoder() { ApiKey = "this-is-my-optional-google-api-key" };
IEnumerable<Address> addresses = await geocoder.GeocodeAsync("1600 pennsylvania ave washington dc");
Console.WriteLine("Formatted: " + addresses.First().FormattedAddress); //Formatted: 1600 Pennsylvania Ave SE, Washington, DC 20003, USA
Console.WriteLine("Coordinates: " + addresses.First().Coordinates.Latitude + ", " + addresses.First().Coordinates.Longitude); //Coordinates: 38.8791981, -76.9818437
下面是相應的NuGet:
安裝,包裝Geocoding.Google
你有沒有試過到目前爲止的事情 – 2013-04-29 08:44:37
看看'HttpWebRequest'類 – 2013-04-29 08:51:26
@SonerGönül我正試圖在本教程中這樣做http://friism.com/c-and-google-geocoding-web-service-v3 – 2013-04-29 08:57:14