从ZipCode检索经纬度

时间:2019-02-21 06:20:22

标签: asp.net-mvc geoip maxmind geoip2 geolite2

这是通过ZipCode(而不是Ipaddress)从 MaxmindDb 中获得“经久”的一种方法。因为我找不到任何方法来通过邮政编码获取详细信息。我不想使用Google Maps Api。

using (var reader = new DatabaseReader(System.Web.Hosting.HostingEnvironment.MapPath("~/GeoLite2-City.mmdb")))
            {
                var city = reader.City(userIpAddress);
                string cityiso = string.Empty;
                if (city != null && !string.IsNullOrEmpty(city.City.Name) && !string.IsNullOrEmpty(city.MostSpecificSubdivision.IsoCode))
                {
                    cityiso = string.Join(", ", city.City.Name, city.MostSpecificSubdivision.IsoCode);
                }
                locationProperties.Location = cityiso;
                locationProperties.Latitude = city.Location.Latitude.ToString();
                locationProperties.Longitude = city.Location.Longitude.ToString();              
            }

但是我想使用UserZipCode代替UserIPAddress

1 个答案:

答案 0 :(得分:0)

从您所提问题的示例中,我假设您要在自己的服务器上查找表,而不使用任何API。

Maxmind Libraries on Github 可能之一包含此功能。但是,Maxmind City DB实际上使用了来自 geonames.org 的邮政编码数据,一种更简单的解决方案是将GeoNames "look-up" table美国邮政编码上传到您的服务器。

它包含一个制表符分隔的文件(完整说明请参见链接底部),您只需编写代码即可按邮政编码查找记录,然后从中读取经纬度字段。为了提高速度,您可以将文件导入到DBMS中,例如邮政编码为键/索引的mySQL(有关说明,请参见Google)。

我对地名数据的准确性和准确性一无所知。