Какие существующие ранее сервисы существуют для вычисления расстояния между двумя адресами?

[^\u0000-\u007F]+ для любых символов, которые не включены в символы ASCII.

Например:

function isNonLatinCharacters(s) {
    return /[^\u0000-\u007F]/.test(s);
}

console.log(isNonLatinCharacters("身分"));// Japanese
console.log(isNonLatinCharacters("测试"));// Chinese
console.log(isNonLatinCharacters("حمید"));// Persian
console.log(isNonLatinCharacters("테스트"));// Korean
console.log(isNonLatinCharacters("परीक्षण"));// Hindi
console.log(isNonLatinCharacters("מִבְחָן"));// Hebrew

Вот несколько отличных ссылок:

Unicode range RegExp generator

Регулярные выражения Unicode

Unicode 10.0 Коды символов

Соответствует диапазону блоков Unicode

12
задан Sean Hanley 8 June 2009 в 20:58
поделиться

8 ответов

Google и Yahoo! оба предоставляют услуги геокодирования бесплатно. Можно вычислить расстояние с помощью формулы Haversine (реализованный в.NET или SQL). Оба сервиса позволят Вам сделать частичные поиски (почтовый индекс только, только город) и сообщат то, что точность их результатов (так, чтобы можно было исключить местоположения без значимой информации, хотя Yahoo! обеспечивает больше информации о точности, чем Google).

10
ответ дан 2 December 2019 в 19:56
поделиться

Вы не можете только использовать карты Google API, чтобы получить расстояния и отсортировать их на Вашей стороне?

http://code.google.com/apis/maps/

1
ответ дан 2 December 2019 в 19:56
поделиться

Google Maps API бесполезна Вам из-за их условий использования. Однако Yahoo предлагает услугу REST для того, чтобы превратить адреса в координаты Long/Lat, которые Вы могли затем использовать для вычисления расстояний. Здесь.

4
ответ дан 2 December 2019 в 19:56
поделиться

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

public static double distance(double lat1, double lon1, double lat2, double lon2, char unit)
{
  double theta = lon1 - lon2;
  double dist = Math.Sin(deg2rad(lat1)) * Math.Sin(deg2rad(lat2)) +
    Math.Cos(deg2rad(lat1)) * Math.Cos(deg2rad(lat2)) * Math.Cos(deg2rad(theta));
  dist = Math.Acos(dist);
  dist = rad2deg(dist);
  dist = dist * 60 * 1.1515;
  if (unit == 'K')
  {
    dist = dist * 1.609344;
  }
  else if (unit == 'N')
  {
    dist = dist * 0.8684;
  }
  return (dist);
}

private static double deg2rad(double deg)
{
  return (deg * Math.PI / 180.0);
}

private static double rad2deg(double rad)
{
  return (rad / Math.PI * 180.0);
}

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

2
ответ дан 2 December 2019 в 19:56
поделиться

Я предложил бы заняться расследованиями, Google отображает API.

Это потребовало бы, чтобы у Вас было внешнее соединение (и чтобы это было в порядке для шунтирования данных по нему к веб-сервису), но это обеспечивает то, чего Вы требуете, а именно, расстояние путем просьбы маршрут между 2 точками и получения расстояния от него.

Ссылка API направлений API

0
ответ дан 2 December 2019 в 19:56
поделиться

Одна вещь, которую мы сделали в моей компании, состоит в том, чтобы обмануть и использовать широту/долготу почтового индекса (Примерно центр области почтового индекса). Это не прекрасно, но это достаточно близко для тех, находят меня x в n милях y типов поисков. Это особенно полезно, когда адреса не могут быть распознаны услугами по уборке адреса.

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

0
ответ дан 2 December 2019 в 19:56
поделиться

Проверьте этот веб-сайт: http://geocoder.us/help/utility.shtml

Можно обработать записи, 1 в 15 секунд как это: http://geocoder.us/service/distance?zip1=95472&zip2=94305

У них также есть сервис подписки без ограничения по времени

0
ответ дан 2 December 2019 в 19:56
поделиться

Кто-то еще уже сделал это в Ненормальной Логике (редактирование: опечатка). Они используют Google Maps API с Большой круговой формулой. Я не думаю, что трудно реализовать.

Обновление: Практически, только необходимо получить координаты от любимого поставщика, затем сделать вычисление с кодом. Можно предварительно загрузить координаты магазинов, когда пользователи обеспечивают свое местоположение - можно даже использовать это для проверки. Затем когда запрос выполнен, Вы можете только поиск местоположение клиента.

0
ответ дан 2 December 2019 в 19:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: