获取邮政编码的纬度和经度值的最佳方法 - C#

best way to get the latitude and longitude values of a zip code - C#

获取邮政编码的纬度和经度值的最佳方法是什么?

这是我目前正在使用的功能,但它每 24 小时只允许 2400 个请求。

private Coordinates GetZipCoordinates(string zip)
    {
        string address = "";
        address = "http://maps.googleapis.com/maps/api/geocode/xml?components=postal_code:" + zip.Trim() + "&sensor=false";

        var result = new System.Net.WebClient().DownloadString(address);
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(result);
        XmlNodeList parentNode = doc.GetElementsByTagName("location");
        var lat = "";
        var lng = "";
        foreach (XmlNode childrenNode in parentNode)
        {
        lat = childrenNode.SelectSingleNode("lat").InnerText;
        lng = childrenNode.SelectSingleNode("lng").InnerText;
        }

        return new Coordinates(Convert.ToDouble(lat), Convert.ToDouble(lng));
    }

有更好的方法吗?我想避免请求限制。请建议。谢谢

您可以在此处下载免费的邮政编码数据库:

http://federalgovernmentzipcodes.us/

使用您自己的,您无需进行任何远程调用。

@Lance - 这就是今天的问题,“邮政编码数据实际上多久更改一次?”首先,请记住,邮政编码不受任何政治边界限制(它们可以跨越县和州),因为邮政编码只是一个交付区域,是为方便美国邮政服务而设计的,而邮政编码会随 USPS 的心血来潮而改变。任何时候他们想要重新调整边界或将一个邮政编码合并到另一个邮政编码(或对交付区域的任何其他更改)都将更改邮政编码数据。创建或停用邮政编码(每月发生一次)也意味着数据发生变化。

因此,根据您的数据需求,您可能希望每月更新一次数据。这是来自 Aug2015.

的数据

如果您需要 API 邮政编码,这里有一些:

  • zippopotam.us
  • smartystreets.com(我在这里工作)
  • zipcodeapi.com
  • zipfeeder.us