Сейчас у меня есть приложение, которое позволяет пользователям рисовать многоугольник на картах Google. Мне нужно сохранить этот полигон с помощью PHP и MySQL, но я не уверен в лучших практиках.
Должен ли я включать пространственные расширения и сохранять геометрию? Должен ли я сохранять каждую вертикаль (пар lat / lng) в массиве? Другой подход, о котором я не знаю?
Мне интересно, что такое лучшие практики. Использование пространственных расширений MySQL кажется сложным. Он возвращает вещи в WKT, а затем я должен разобрать этот текст, чтобы заставить его сделать что-то еще. Это кажется запутанным.
Лучше всего подумать о сценариях использования при планировании своего уровня хранения.
Это поможет вам определить, какие запросы вы хотите оптимизировать для вашего уровня персистентности.
Если вы собираетесь обрабатывать множество запросов, таких как «Найти все объекты в этом пространстве». Вы можете посмотреть на использование пространственных расширений.
Однако, если большую часть времени вы просто рисуете объект с заданным идентификатором, просто сохраняйте многоугольники, как может быть json blob в БД.
CREATE TABLE Полигоны (polygon_id int not null, vertices_json varchar (4096))
Вы также можете использовать: google.maps.geometry.encoding
для кодирования / сжатия путей
http://code.google.com/intl/fr/apis/maps/documentation/utilities/polylinealgorithm.html
Я когда-то использовал это, чтобы сохранить в базе данных тысячи направлений, и это довольно удобно.
Потратьте время, чтобы ознакомиться с пространственными расширениями, поскольку они помогут вам выполнить задачи в будущем, а не только для этого проекта.