C# 将地址转换为经度和纬度时,对象引用未设置为对象的实例

C# 将地址转换为经度和纬度时,对象引用未设置为对象的实例,c#,google-maps,C#,Google Maps,我试图用这个代码把地址转换成经度和纬度,但我遇到了如下异常 对象引用未设置为对象的实例 System.NullReferenceException:Object reference not set to an instance of an object 在代码中 var address = "123 something st, somewhere"; var requestUri = string.Format("http://maps.googleapis.com/maps/api/geoc

我试图用这个代码把地址转换成经度和纬度,但我遇到了如下异常 对象引用未设置为对象的实例

System.NullReferenceException:Object reference not set to an instance of an object
在代码中

var address = "123 something st, somewhere";
var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address));

var request = WebRequest.Create(requestUri);
var response = request.GetResponse();
var xdoc = XDocument.Load(response.GetResponseStream());

var result = xdoc.Element("GeocodeResponse").Element("result");
var locationElement = result.Element("geometry").Element("location");
var lat = locationElement.Element("lat");
var lng = locationElement.Element("lng");
Response.Write(lat);
Response.Write(lng);
排队

var locationElement = result.Element("geometry").Element("location");

有人请帮帮我。

看起来您的result或result.Element(“几何体”)为空。请在调试器模式下检查它

问题是您正在使用假地址来测试

我将您的requestUrl和地址(URLSeived)插入Chrome,并得到以下响应:

<GeocodeResponse>
    <status>ZERO_RESULTS</status>
</GeocodeResponse>

兄弟,我正在做一个需要用c语言开发网站的项目。我能得到你的帮助吗?请你提供任何联系方式,比如邮件id或fb。真的需要帮助,兄弟,我可以帮你,但不会便宜:)这是个玩笑。我是说如果你在一个项目上需要那么多的帮助,没有人会免费去做。我建议你读一些C#books来学习基础知识,当你遇到困难时,继续在这里提问。祝你好运,伙计。不要忘记将对您帮助最大的答案标记为已接受的答案(答案分数下的复选标记图标):)
<GeocodeResponse>
    <status>OK</status>
    <result>...</result>
</GeocodeResponse>
var xdoc = XDocument.Load(response.GetResponseStream());
var status = xdoc.Root.Element("status").Value;

switch (status)
{
    case "ZERO_RESULTS":
        // oops! no location found!
        Response.Write("That address does not exist");
        break;
    case "OK":
        var result = xdoc.Element("GeocodeResponse").Element("result");
        var locationElement = result.Element("geometry").Element("location");
        var lat = locationElement.Element("lat");
        var lng = locationElement.Element("lng");
        Response.Write(lat);
        Response.Write(lng);                   
        break;
    default: 
        // handle other status
        break;
}