Расчет расстояния между почтовыми индексами США - PullRequest
0 голосов
/ 25 мая 2018

У меня есть почтовый индекс, город и штат, которые хранятся в виде переменных для каждого пользователя.Мне нужно вычислить и отобразить расстояние в милях между всеми пользователями из базы данных и текущим пользователем.

Я сталкивался с рубиновыми драгоценными камнями Geo-magic и Geo-distance, но для расчета они используют lat и lon.

Хотелось бы получить что-то вроде этого
https://www.freemaptools.com/distance-between-usa-zip-codes.htm https://www.mapdevelopers.com/distance_from_to.php

Хотелось бы немного помочь реализовать это в рельсах наиболее эффективным способом.ТИА.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Драгоценный камень Geocoder также является хорошим вариантом.

Однако, как указывали другие авторы, в какой-то момент вам понадобится перевести данные о вашем местоположении вниз на широту/долгота.Вы можете найти базы данных , такие как эта, из SoftwareTools , которые могут переводить почтовые индексы в широту / долготу, но точность невелика.Почтовые индексы несколько обманчивы;они сильно различаются по размеру, и их границы меняются с некоторой частотой.

Например, почтовый индекс 89049 покрывает площадь в 10 000 квадратных миль , поэтому расчет расстояния может бытьболее чем на сто миль, в зависимости от того, где в почтовом индексе находится пользователь.

Было бы лучше использовать инструмент геолокации для перевода адреса улицы каждого пользователя в широту / долготу и использовать его для своего расстояния.расчеты.В этом может помочь Haversine gem , или, если вы используете PostgreSQL, вы можете использовать модуль защиты от земли .

(я не имею никакого отношения к SoftwareTools, кроме какдовольный клиент.)

0 голосов
/ 25 мая 2018

Взгляните на Geokit драгоценный камень.Этот драгоценный камень может дать вам расстояние между местами на основе почтового индекса или адреса.Но этот драгоценный камень будет использовать карты Google Gmaps / Bing.

Пример:

a=Geokit::Geocoders::GoogleGeocoder.geocode '140 Market St, San Francisco, CA'

b=Geokit::Geocoders::GoogleGeocoder.geocode '789 Geary St, San Francisco, CA'

a.distance_to(b) # Get the distance between 'a' and 'b' 

Проверьте домашнюю страницу драгоценного камня для большего использования.

...