Получить Лат Лонг из ZipCode
Это их способ получить Lat Long из MaxmindDb через ZipCode, а не Ipaddress. Поскольку я не могу найти какой-либо метод для получения деталей через почтовый индекс. Я не хочу использовать 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 ответ
Из примера в вашем вопросе я предполагаю, что вам нужна таблица поиска на вашем собственном сервере, а не какой-либо API.
Одна из библиотек Maxmind на Github может включать эту функцию. Однако Maxmind City DB на самом деле использует данные почтового индекса из geonames.org, и более простым решением может быть загрузка таблицы поиска Zo for GeoNames для США на ваш сервер.
Он содержит файл с разделителями табуляции (см. Полное описание в нижней части ссылки), и вам просто нужно написать код, чтобы найти запись по почтовому индексу, а затем прочитать из нее поля lat и long. Для повышения скорости вы можете импортировать файл в СУБД, например, mySQL (google для инструкций) с почтовым индексом в виде ключа / индексации.
Я понятия не имею о точности и точности данных Geonames.