Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET如何查找CivicAddress?_.net_Windows Phone 7 - Fatal编程技术网

.NET如何查找CivicAddress?

.NET如何查找CivicAddress?,.net,windows-phone-7,.net,Windows Phone 7,此代码返回一个空字符串。我能做些什么来退货 CivicAddressResolver civicResolver = new CivicAddressResolver(); CivicAddress c = civicResolver.ResolveAddress(new GeoCoordinate(39,77)); textBlock1.Text = c.City; 这里真的没有足够的信息来评论任何事情。我们需要知道地址的作用。你想要它归还什么?似乎无论你在做什么,都找不到你发送的long/

此代码返回一个空字符串。我能做些什么来退货

CivicAddressResolver civicResolver = new CivicAddressResolver();
CivicAddress c = civicResolver.ResolveAddress(new GeoCoordinate(39,77));
textBlock1.Text = c.City;

这里真的没有足够的信息来评论任何事情。我们需要知道地址的作用。你想要它归还什么?似乎无论你在做什么,都找不到你发送的long/lat(我猜)


根据您要执行的操作,如果找不到您要查找的CivicAddress,则应返回空CivicAddress,然后在分配给textBlock1控件之前执行空检查。

的MSDN文档建议,在尝试访问c.City之前检查c.IsUnknown将是一个好主意。

来自:

此方法未在中实现 当前版本

我认为这就是为什么您在Windows Phone 7上没有得到结果的原因。
希望这个功能很快就可以使用。(最好通过OTA更新。)


如果您没有在电话中这样做,请适当地重新标记此问题。

这表明您可以访问大量数据:世界上任何城市/城镇的街道/地址号码,无论他们选择支持哪个子集。我很难相信这会包括在手机上。也许最终会通过网络服务提供?在这种情况下,使用CivicAddressResolver.ResolveAddressAsync方法将非常有用。

任何平台都不支持获取civic地址。我一直在考虑在桌面上使用它,发现我也有同样的行为。因此,我对.NET reflector进行了一些挖掘,发现resolve address调用实际上没有任何与调用所暗示的语义匹配的实现:

public CivicAddress ResolveAddress(GeoCoordinate coordinate)
{
    if (coordinate == null)
    {
        throw new ArgumentNullException("coordinate");
    }
    if (coordinate.IsUnknown)
    {
        throw new ArgumentException("coordinate");
    }
    return coordinate.m_address;
}
也就是说,没有实际解决公民地址的坐标问题。它只返回从未设置的默认初始化地址

当我深入研究实际实现时,我发现它会检查是否可以从底层位置提供程序查询lat/long或civic地址。如果它可以查询lat/long,它将始终只查询lat/long,而永远不会获得公民地址

回到.NETAPI的语义,这意味着您要查找一个lat/long位置,然后对一个civic地址执行单独的解析。这不是底层(COM)API的实际工作方式。当您在API中查询某个位置时,您需要一份lat/long报告或civic address报告-您没有得到一份报告,然后再解析到另一份


因此,简而言之,我的结论是.NET实现是半生不熟的,而且从来没有经过适当的测试。我将围绕底层的COM API编写自己的.NET包装,不幸的是,这不是WinPhone所能做的。

然而,奇怪的是,
CivicAddress
CivicAddressResolver
都是框架类……我知道,但我想返回一些东西。通过添加这一点,我只会限制more=uYou想要返回一个地址,而这个方法一开始可能没有返回地址?似乎您需要一个默认地址,当CivicAddressResolver无法解析您提供的坐标时,可以返回该地址。如果是这样的话,检查IsUnknown仍然是处理这种情况的正确方法。(默认值可以是。)