如何从街道地址获取坐标

时间:2013-01-22 11:10:56

标签: c# location windows-phone-8

我正在使用Windows Phone 8 app,但我找不到,如何获取坐标表格地址。 问题是,我有我的coordiantes,我需要计算我和某个地址之间的距离。

Windows Phone 8没有记录那么多,所以请帮帮我。

3 个答案:

答案 0 :(得分:8)

您正在寻找的是“地理编码”:将地址转换为GeoCoordinate。

如前所述,您可以在WP7上使用Google和Bing来实现这一目标。在Windows Phone 8上支持地理编码和反向地理编码作为框架的一部分。您可以阅读GeoCoding at this Nokia intro article概述(在“地理编码”下)和更全面的概述at this other Nokia article

以下是地理编码从地址转换为坐标的示例:

private void Maps_GeoCoding(object sender, RoutedEventArgs e)
{
    GeocodeQuery query = new GeocodeQuery()
    {
        GeoCoordinate = new GeoCoordinate(0, 0),
        SearchTerm = "Ferry Building, San-Francisco"
    };
     query.QueryCompleted += query_QueryCompleted;
    query.QueryAsync();
}

void query_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e)
{
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("Ferry Building Geocoding results...");
    foreach (var item in e.Result)
    {
        sb.AppendLine(item.GeoCoordinate.ToString());
        sb.AppendLine(item.Information.Name);
        sb.AppendLine(item.Information.Description);
        sb.AppendLine(item.Information.Address.BuildingFloor);
        sb.AppendLine(item.Information.Address.BuildingName);
        sb.AppendLine(item.Information.Address.BuildingRoom);
        sb.AppendLine(item.Information.Address.BuildingZone);
        sb.AppendLine(item.Information.Address.City);
        sb.AppendLine(item.Information.Address.Continent);
        sb.AppendLine(item.Information.Address.Country);
        sb.AppendLine(item.Information.Address.CountryCode);
        sb.AppendLine(item.Information.Address.County);
        sb.AppendLine(item.Information.Address.District);
        sb.AppendLine(item.Information.Address.HouseNumber);
        sb.AppendLine(item.Information.Address.Neighborhood);
        sb.AppendLine(item.Information.Address.PostalCode);
        sb.AppendLine(item.Information.Address.Province);
        sb.AppendLine(item.Information.Address.State);
        sb.AppendLine(item.Information.Address.StateCode);
        sb.AppendLine(item.Information.Address.Street);
        sb.AppendLine(item.Information.Address.Township);
    }
    MessageBox.Show(sb.ToString());
}

当我在WP8上运行此代码段时,我得到以下消息框:

MEssageBox showing details for the ferry building

答案 1 :(得分:0)

您有几个选项,我用来完成此任务的是使用网络服务,GOOGLE,BING,YAHOO等。

Bing上的

(Cus适用于Windows手机) 你需要一把钥匙来访问地图api你可以获得密钥 http://www.microsoft.com/maps/developers/mobile.aspx

获得密钥后,您可以使用WP7.1 SDK获取BING,或者如果这对您不起作用,请使用Rest服务上的位置api http://msdn.microsoft.com/en-us/library/ff701715.aspx

答案 2 :(得分:0)

Bing Maps REST服务还提供了从给定地址获取Lat / Long的功能,可在MSDN here上找到更多信息

您需要通过here...

获取Bind Maps键