Лучший способ сохранить координаты геолокации в базе данных websql, а также работать с картами Google после вывода.

Может ли кто-нибудь предложить лучший формат для хранения координат геолокации в базе данных websql? Было бы лучше получить значения из массива и сохранить в формате: (52.8165972, -2.1174389000000247), (52.8165972, -2.1174389000000247), (52.8165972, -2.1174389000000247), где каждая скобка представляет собой набор координат (широта, длина ), или было бы лучше разделить значения широты и долготы в отдельные столбцы?

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

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

Любые советы будут высоко оценены!

РЕДАКТИРОВАТЬ: Дополнительная информация обо всем проекте

Я создаю приложение, предназначенное для отслеживания местоположения пользователей во время прогулок. Механика отслеживания и рисования полилинии в реальном времени работает отлично. После «завершения» прогулки пользователь попадает на второй экран, где можно добавить дополнительные сведения, такие как названия прогулок, описания. Информация, такая как путь полилинии, выводится из массива на карту, чтобы пользователь мог ее видеть. При «сохранении» с этой страницы все данные собираются как из массивов для этого сеанса, так и из любой информации, введенной на этой странице, и сохраняются в отдельной строке с автоматическим приращением в таблице.

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


person Matt Meadows    schedule 15.04.2015    source источник


Ответы (1)


У вас есть ряд вариантов.

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

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

Или вы можете хранить всю полилинию в одном столбце.

Я бы рекомендовал последний вариант, поскольку он приводит к более предсказуемой структуре базы данных. Запрашивать данные широты/долготы сложнее, но есть способы обойти эту проблему, если вы не можете ее игнорировать.

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

Они будут храниться как десятичные числа. См. этот пост для получения подробной информации о точности, которая, по вашему мнению, требуется для вашего приложения.

Насколько точно следует хранить широту и долготу?

Это позволит вам искать линии или точки в грубой области, которую можно уточнить с помощью javascript.

person Bob    schedule 15.04.2015
comment
В настоящее время я сохраняю всю полилинию в один столбец как (52.8165972, -2.1174389000000247), (52.8165972, -2.1174389000000247), (52.8165972, -2.1174389000000247), например, это использует массив, построенный в основном с использованием googleLatLng.push(new google.maps.LatLng(lat, lng)); в формат, который может использовать полилиния (я думаю) - person Matt Meadows; 15.04.2015
comment
Если бы я сохранил его в базе данных, как он у меня сейчас есть, как указано в комментарии выше, можно ли было бы извлечь из базы данных в определенном формате? Так как мне нужно, чтобы он обрывался после каждой запятой после каждой пары - person Matt Meadows; 15.04.2015
comment
Таким образом, вы наверняка сэкономите время на написании кода, который разбивает и собирает ломаную линию. Если вы хотите найти в базе данных полилинии рядом с заданной координатой, вам нужно будет, по крайней мере, вычислить приблизительный центр каждой линии (вычисление средней широты и средней длины для линии должно работать) и сохранить каждый из этих центров широты и центра lng точки в собственном десятичном столбце. - person Bob; 15.04.2015
comment
Я бы справился с этим, выбрав всю полилинию из базы данных и используя javascript, чтобы разбить ее на точки. Любая работа, которая может быть загружена с сервера в веб-браузер клиента, обычно является преимуществом. - person Bob; 15.04.2015
comment
Я не думаю, что вы знаете о лучших функциях, доступных в javascript, чтобы разбить его после каждой пары координат? - person Matt Meadows; 15.04.2015
comment
Если строка содержит полилинию, которую вы описали выше, в переменной с именем polystring используйте polystring.split("),("), это вернет массив строк, которые являются точками. Все скобки из середины полилинии будут удалены, но имейте в виду, что первая по-прежнему будет начинаться с (, а последняя будет заканчиваться на ), вы можете использовать polyline.substr, чтобы обрезать их перед тем, как разделить их. Вы можете снова использовать разделение для каждой точки, чтобы разбить их на широту и долготу, если вам нужно. - person Bob; 15.04.2015
comment
Давайте продолжим обсуждение в чате. - person Bob; 15.04.2015