Я планирую сделать что-то подобное в самое ближайшее время, поэтому у меня есть несколько предложений, но пока нет реального кода, которым можно поделиться. Я надеюсь, что это полезно.
Я ожидаю сохранить широту / долготу для каждого элемента в моей базе данных (поэтому он геокодируется только один раз). Чтобы выбрать элементы на определенном расстоянии от точки, я вычислю широту / долготу, которые находятся в «х» милях к северу / югу / востоку / западу от моей центральной точки. Тогда выбор становится простым делом выбора записей, где значения широты и долготы находятся между значениями моего квадрата.
И да, я знаю, что технически я должен использовать круг, чтобы точно контролировать расстояние, но это намного проще и быстрее. Если вам действительно нужно использовать круг для более точного ограничения, сначала используйте этот метод, а затем используйте более сложные вычисления, чтобы отсеять элементы за пределами круга в углах.
Я не знаком с лицензированием Bing, но если я правильно помню о Google, вам нужна платная (коммерческая) лицензия для хранения результатов геокодирования. И это не дешево. Так что это может свести на нет любую ценность, которую могло иметь мое предложение: (
Edit; Я просто читаю вопрос немного более внимательно и вижу, что речь идет о пробеге миль, а не линейных миль. Таким образом, мой ответ на самом деле не применим, если только вы не хотите использовать его как способ сузить количество вычислений пробега, которое вам нужно сделать.
Кроме того, что касается геокодирования и лицензий, вы можете посмотреть на geocoder.us , который довольно дешев.