Как сделать "хх км" из Location, geo / google api - PullRequest
1 голос
/ 22 октября 2011

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

Поиск: Валби (город в Дании)

Restaurant Ankrara - 2 km from Valby
Restaurant JuicyFood - 3 km from Valby
Restaurant FoodJuicy - 5 km from Valby
Restaurant Blabla - 22 km from Valby

После исследования и вопроса здесь о SO, я обнаружил, что мне нужно использовать геокодирование и API Google Maps.

Хорошо, я перешел к шагу, на котором я преобразовал то, что вы ввели (город Вэлби в примере выше), в геокод (координаты широты и долготы).

И тогда у меня есть адреса в координатах.

Как подсчитать километры между городом и адресом ресторана в координатах?

Для примера вот шнуры города "Валби":

55.662133, 12.508028

А вот 3 ресторана, адреса, шнуры:

55.667029, 12.527715
55.6939821, 12.4934945
55.6696885, 12.3755492

(И как я могу показать их с ближайшим / ближайшим сначала, а затем по убыванию <- не требуется для принятого ответа, я в конечном итоге задаю новый вопрос для этого) </p>

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Вы можете вычислить расстояния:

var pos = new google.maps.LatLng(55.662133, 12.508028);

var r1 = {name: "rest1", lat: 55.667029, lng: 12.527715, dist: 0};
var r2 = {name: "rest2", lat: 55.6939821, lng: 12.4934945, dist: 0};
var r3 = {name: "rest3", lat: 55.6696885, lng: 12.3755492, dist: 0};

var r = [r3, r2, r1];
for (var i = 0; i < r.length; ++i) {
    var p = new google.maps.LatLng(r[i].lat, r[i].lng);
    var d = google.maps.geometry.spherical.computeDistanceBetween(pos, p);
    r[i].dist = d;
}

и затем отсортировать их:

r.sort(function(r1, r2) {return r1.dist - r2.dist;});

Подробнее см. работающий исходный код на jsfiddle .

0 голосов
/ 24 октября 2011

Вы можете вычислить расстояния на вашем сервере. См. Статью Создание локатора магазина с помощью PHP, MySQL и Google Maps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...