Как найти ближайший магазин, который мы поместили с маркером в Google Maps?

Позвольте мне немного объяснить проект. У нас огромный список магазинов с адресами. Каждый из этих адресов в базе данных имеет географическое местоположение.

Теперь мой вопрос: когда пользователь вводит свой адрес, почтовый индекс и т. Д., У нас есть его местоположение и его географическое местоположение, можно ли найти ближайший магазин на картах Google на основе местоположения пользователя. Если не через географическое местоположение, то, возможно, на основе почтового индекса?

Я заглянул в API Google Maps, но не нашел что-то для этого. Важно то, что он ищет в магазинах, которые мы добавили на Google Maps. Я предпочитаю не использовать карты Google, а только: http://maps.googleapis.com/maps/api/geocode/json?

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

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

Было бы очень хорошо, если бы кто-нибудь мог дать мне хороший совет, как это сделать.

2 ответа

Решение

Прежде всего используйте карту и попросите пользователя установить его приблизительное местоположение, получить эти значения, с помощью этого кода получить расстояние до каждого магазина:

google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);

со https://developers.google.com/maps/documentation/javascript/reference?hl=en-US

Теперь выберите более короткий и выведите его

но я бы лучше попросил его ввести Город и узнать расстояние через запрос API Wolfram.

 $city=customer_city;
 $north=store_north; //coordinate_l
 $west=store_west; //coordinate_L
 $wolfram_query="http://api.wolframalpha.com/v2/query?appid=".$appid."&input=distance%20from%20".$city."%20to%20".$north."N%20".$west."W%20in%20km&format=image,plaintext";

и получить расстояние от XML-ответа, оставляя карты Google вне

другой вариант, использующий почтовые индексы, состоит в том, чтобы вычислить сферическое расстояние из двух координат с помощью этой функции php внутри цикла while, проходящего через все широты и долготы язв:

function calcDist($lat_A, $long_A, $lat_store[i], $long_store[i]) {

$distance = sin(deg2rad($lat_A))
            * sin(deg2rad($lat_B))
            + cos(deg2rad($lat_A))
            * cos(deg2rad($lat_B))
            * cos(deg2rad($long_A - $long_B));

$distance = (rad2deg(acos($distance))) * 69.09;

return $distance;
}  

расстояние в милях, если вы хотите расстояние в км, используйте это

 function miles2kms($miles) {
 $ratio = 1.609344;
 $kms = $miles * $ratio;
 return $kms;
 }

и вы можете получить последний и длинный почтовый индекс, используя эту базу данных: http://sourceforge.net/projects/zips/files/ или этот http://postcodedb.sourceforge.net/dumpCSV.php

чтобы улучшить результат расстояния, вы должны использовать расчеты Haversine или Vincenty... которые немного сложнее..

... но нам нравится в сети то, что кто-то наверняка сделал это раньше, чем мы, и, конечно, поделился своими усилиями! http://www.phpclasses.org/package/6480-PHP-Calculate-the-distance-between-Earth-two-points.html это класс, который реализует расстояние хаверсин! это может быть лучше... если вы хотите использовать Vincenty, попробуйте это: реализуя формулу Vincenty в PHP, попробуйте, какой из них даст вам лучшие результаты, даже если наиболее точным всегда будет вольфрам, математики работали над этим, так что это работает довольно Что ж;)

Когда вы говорите "Географическое положение", какая конкретная информация у вас есть о местоположении? Я сделал нечто подобное, используя координаты (широта и долгота) объекта и большую коллекцию координат близлежащих достопримечательностей. Поскольку широта и долгота (в десятичном формате) являются просто... десятичными числами, то это одно уравнение, позволяющее рассчитать, какая точка ближе всего к другой, найдя наименьшее различие между значениями широты и долготы.

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

Другие вопросы по тегам