Лучшие практики для физического местоположения пользователя (ввод, тип данных, отображение и проверка)

Я создаю веб-приложение, которое требует, чтобы пользователи указывали свое местоположение (аналогично тому, как это делает Facebook). Я не уверен, как лучше всего это реализовать. Мне требуется возможность поиска в записях другого объекта (назовем его «события»), к которому также привязано физическое местоположение, и сопоставление пользователей в том же или достаточно близком месте. Мне требуется разрешение только для отдельных городов/поселков.

То, как я позволяю пользователю указать свое местоположение (включая проверку и то, как в свободной форме я бы разрешил этот ввод), способ хранения этого поля в БД и т. д., очевидно, зависят друг от друга. В настоящее время я думаю о том, чтобы разрешить ввод в произвольной форме, сохранить в виде текстовой строки и сопоставить, разбив строку местоположения на массив (разделенный запятыми и символами точки), а затем сравнив массив местоположения пользователя с массивом местоположения события.

Есть ли способ облегчить себе задачу, проверив список местоположений, предоставленный какой-либо веб-службой? Как обычно решаются эти проблемы?

Любая помощь будет принята с благодарностью!


person ubermensch    schedule 03.07.2010    source источник


Ответы (2)


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

Более точным (и, вероятно, более сложным) подходом было бы сохранение всех местоположений в координатах. Вы можете использовать веб-службу геолокации (я полагаю, что Google предоставляет ее и другие), чтобы сопоставить названия местоположений с координатами. Вы также можете использовать геолокацию на основе IP, чтобы попытаться угадать, где находится пользователь, чтобы ему не обязательно вводить свой собственный адрес.

Существуют формулы (и, возможно, библиотеки) для вычисления расстояний между координатами относительно друг друга, которые упростили бы отображение вещей в определенном радиусе от координат пользователя и тому подобное.

Вы также можете рассмотреть возможность использования нового API геолокации HTML5, который поддерживается последние браузеры

person Jani Hartikainen    schedule 03.07.2010
comment
Я не уверен, как API геолокации может мне помочь - если пользователь указывает недопустимое местоположение, которое не проверяется с помощью API, тогда мера расстояния между пользователем и местоположением события (которое будет гораздо лучше указано с помощью улицы адрес/API местоположения Google «место») невозможно. - person ubermensch; 04.07.2010
comment
Вы можете использовать гео API для определения местоположения пользователя с таких устройств, как iPhone, без необходимости вручную вводить (или знать) свое точное местоположение. Конечно, это может быть вам полезно, а может и нет, в зависимости от того, над каким приложением вы работаете. - person Jani Hartikainen; 05.07.2010
comment
Ах я вижу. Спасибо Яни. Единственная проблема, я думаю, заключается в том, что пользователю придется вручную разрешить мне собирать информацию о местоположении пользовательского агента - не особенно удобно для пользователя, и многие пользователи с подозрением относятся к такой функциональности. - person ubermensch; 05.07.2010

Если вам нужно делать такие вещи, как «фильтровать пользователей по местоположению», то лучше (я думаю) иметь предварительно определенный список местоположений, из которых пользователи выбирают (с некоторыми предложениями при вводе вместо раскрывающегося списка с тысячами местоположений, например).

Вы можете начать с данных с http://www.geonames.org/ (вам, вероятно, потребуется какая-то уборка).

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

person Rafa    schedule 03.06.2012