如何使用 Bing 地图检索邮政地址的纬度和经度?

Posted

技术标签:

【中文标题】如何使用 Bing 地图检索邮政地址的纬度和经度?【英文标题】:How can I retrieve Latitude and Longitude of a postal address using Bing Maps? 【发布时间】:2021-04-21 11:05:17 【问题描述】:

我希望能够检索给定地址的地理坐标(纬度和经度)。如果我有完整的地址(街道地址 + 城市 + 州 + 邮编),我希望我能做到这一点。

如果重要的话,我正在使用 Bing 地图。我得到的骨架代码是这样的(fullAddress、AddPushpin() 和 getGeoCordsForAddress() 是最相关的部分):

private void btnSave_Click(object sender, EventArgs e)

    string fullAddress = string.Empty;
    if (MissingValues()) return;    

    mapName = cmbxMapName.SelectedItem.ToString();
    locationName = txtbxLocation.Text;
    address = txtbxAddress.Text;
    city = txtbxCity.Text;
    st8 = txtbxSt8.Text;
    zip = txtbxZip.Text;
    mapDetailNotes = richtxtbxMapNotes.Text;
    fullAddress = string.Format("0 1 2 3", address, city, st8, zip);

    if (InsertIntoCartographerDetail())
    
        MessageBox.Show("insert succeeded"); 
        AddPushpin(fullAddress);
        ClearControls();
    
    else
    
        MessageBox.Show("insert failed");
            


private void AddPushpin(string fullAddress)

    GeoCoordinate geoCoord = getGeoCordsForAddress(fullAddress);
    Pushpin pin = new Pushpin();
    pin.Location = new Location(geoCoord.Latitude, geoCoord.Longitude);
    . . .


private GeoCoordinate getGeoCordsForAddress(string fullAddress)

   GeoCoordinate gc = new GeoCoordinate();
   . . . // What goes here?
   return gc;

【问题讨论】:

找到这篇文章:docs.microsoft.com/bingmaps/rest-services/locations/… 你可以看看这个库:Generic C# Geocoding API,它允许获取包括坐标在内的地址信息。 这能回答你的问题吗? Get Latitude Longitude from an address c# Generic C# Geocoding API - GitHub -- Bing Maps V8 Code Samples 【参考方案1】:

Microsoft 有一个官方的BingMapsRESTToolkit,可以帮助您轻松使用Bing Maps REST Services。为此,您需要安装BingMapsRESTToolkit NuGet Package。

在这里,您对GeocodeRequest 感兴趣以通过地址获取位置。

示例 - 通过地址获取经纬度并在地图上创建图钉

安装BingMapsRESTToolkit NuGet 包并运行以下代码:

private async void button1_Click(object sender, EventArgs e)

   var request = new GeocodeRequest();
   request.BingMapsKey = "YOUR MAP KEY";

   request.Query = "172 Jalan Pinang, 50088 Kuala Lumpur, " +
           "Federal Territory of Kuala Lumpur, Malaysia";
   //OR
   //request.Address = new SimpleAddress()
   //
   //    CountryRegion = "Malaysia",
   //    AddressLine = "172 Jalan Pinang",
   //    AdminDistrict = "Kuala Lumpur, Federal Territory of Kuala Lumpur",
   //    PostalCode = "50088",
   //;

   var result = await request.Execute();
   if (result.StatusCode == 200)
   
       var toolkitLocation = (result?.ResourceSets?.FirstOrDefault())
               ?.Resources?.FirstOrDefault()
               as BingMapsRESTToolkit.Location;
       var latitude = toolkitLocation.Point.Coordinates[0];
       var longitude = toolkitLocation.Point.Coordinates[1];
       var mapLocation = new Microsoft.Maps.MapControl.WPF.Location(latitude, longitude);
       this.userControl11.myMap.SetView(mapLocation, 15);
       var p = new Pushpin()  Location = mapLocation, ToolTip = "KLCC Park" ;
       this.userControl11.myMap.Children.Add(p);
   

如何在 Windows 窗体中使用 WPF Bing 地图:

How can I add a Bing Maps Component to my C# Winforms app? Getting Bing Maps key

Bing Maps REST Toolkit 相关资源:

Getting Started API Reference Project Homepage NuGet Package

【讨论】:

以上是关于如何使用 Bing 地图检索邮政地址的纬度和经度?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google 静态地图检索经度/纬度的问题

使用 Bing 或 Google Maps API 获取用户的位置(纬度、经度)

如何使用 bing 将城市/州转换为地理位置(纬度/经度)?

从英国邮政编码地理编码经度和纬度? [复制]

在不使用地图 android 的情况下从邮政编码中获取纬度和经度

使用地理编码器根据纬度和经度检索地址会导致延迟。安卓