MySQL хранит данные карт Google широта / долгота - PullRequest
1 голос
/ 20 июня 2011

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

------------------------------------
| mapentryid | mapid | Long | Lat  | 
------------------------------------
| 1          | 1     | X.XX | X.XX |
| 2          | 1     | X.XX | X.XX |
| 3          | 1     | X.XX | X.XX |
| 4          | 2     | X.XX | X.XX |
| 5          | 2     | X.XX | X.XX |
| 6          | 2     | X.XX | X.XX |
| 7          | 2     | X.XX | X.XX |
------------------------------------

Но с тех пор я узнал, что вы можете хранить multilinestring в MySQL, что звучит идеально длячто я хочу (я думаю?)

Я могу правильно вставить данные, используя следующий формат запроса SQL:

INSERT INTO table (LatLng)
VALUES (
         MultiLineString(
            LineString(Point(x),Point(y)),
            LineString(Point(x),Point(y)),LineString(Point(x),Point(y))
       )

Это добавляет многоканальную строку OK, хотя на самом деле они выглядят следующим образом:

phpmyadmin screenshot

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

1 Ответ

3 голосов
/ 20 июня 2011

Почему бы не использовать данные POINT?

INSERT INTO geoTable (mapentryid, mapid, coord) VALUES (
    1, 1, GeomFromText('POINT(15 20)')
);

Я всегда использую 'Хорошо известный текст (WKT) Формат' для запросов с геопространственной поддержкой в ​​MySQL, они наиболее совместимыс другими системами.

Для запроса сохраненных значений:

SELECT mapentryid, mapid, X(coord), Y(coord) FROM geoTable;
...