2013-04-02 4 views
2

Я создал карту Google, используя JavaScript (v3 api). Я набрал пару маркеров, чтобы показать, что это можно сделать. Я добавил текст в текстовое поле, специфичное для каждого маркера, чтобы увидеть, можно ли это сделать. Оба маркера и текстовое поле уродливые, но это проблема для другого дня. Карта занимает около 75% ширины экрана и 100% высоты экрана. У меня есть mySQL db сообщений пользователя. Данные включают в себя сообщение #id, категорию, IP-адрес, значение долготы, значение широты, город, имя пользователя, заголовок и содержимое сообщения. Я «плавал» таблицу, содержащую категорию post и загоняясь рядом с картой, используя PHP для запроса db, перетаскивая строки db в массив и используя это как источник для таблицы. Это занимает оставшуюся часть ширины дисплея.Передача php массива на javascript

Прекрасно, до сих пор.

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

Но я не могу найти способ передать массив PHP на Google Map JavaScript, чтобы я мог использовать его для добавления маркеров по мере необходимости. Я еще не смог найти способ связать мышь с событием на объекте, внешнем по отношению к карте Google, на маркер карты Google.

Я провел обширные исследования и нашел похожие запросы для первого - передал массив PHP в JavaScript. Предлагаемое решение обычно заключается в создании строки из массива PHP с каким-то разделителем, например. запятую и передать это JavaScript, где он преобразован в массив. Я не верю, что это будет работать в моем случае.

Мой текущий код находится в одном файле. Материал стиля находится в разделе стиля раздела html head и может быть перемещен в отдельный файл css позже. Карт Google JavaScript находится в разделах сценариев, снова в html-заголовке и может быть перемещен в отдельный файл js. Тело содержит только немного html-divs для карты-canvas и таблицы с PHP для получения строк базы данных в одном массиве PHP и для создания html для таблицы.

Я знаю, что «PHP - это серверная технология, а JavaScript - клиентская сторона», как было указано много раз. Но наверняка должен быть какой-то способ передать массив данных, полученный PHP из SQL db (а не того, что источник данных особенно уместен) для кода JavaScript?

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

Позаботьтесь.

Майк

Добавление отредактировав оригинальный пост.

OK. Возможно, я нашел ответ на мой второй вопрос: как создать ссылку с внешнего элемента на маркер карты Google. http://econym.org.uk/gmap/mouseover.htm Всегда путь, после отказа от поиска чего-то, что элемент найден.

Майк

+1

Вы всегда можете сделать AJAX вызов из ваших JS на страницу PHP, и есть страница PHP возвращает данные в формате JSON. Или у вас есть дамп PHP объекта JSON в ваш скрипт напрямую (брутто). – Chad

+0

Json array, вероятно, будет самым простым. – Pitchinnate

+0

Несомненно, как вы набрали этот вопрос, сайт SO должен был предложить похожие вопросы, такие как [этот] (http://stackoverflow.com/questions/4885737/pass-a-php-array-to-a-javascript-function)? – Spudley

ответ

7

Преобразование PHP массив JSON, используя json_encode.

Теперь у вас есть объект JavaScript, который вы можете использовать.

+0

Да, весь этот вопрос имеет этот крошечный ответ, просто закодируйте его на json! – Hilmi

+0

Хммм! JSON. «... открытый стандарт, основанный на тексте, предназначенный для обмена людьми с возможностью чтения» от нашего друга-вики. – user2236181

+0

Хммм! JSON, похоже, является популярным ответом. JSON '... открытый стандарт, основанный на тексте, предназначенный для обмена людьми с возможностью чтения »(от нашего друга-вики). У этого, кажется, есть возможности - намного лучше, чем те другие возможные решения, которые я нашел здесь для того, что мне нужно сделать. Теперь, если бы я мог только выяснить, что и как? Не предполагается, что есть функция argo()? Требуется гораздо больше исследований. Спасибо всем за вашу очень, очень оперативную помощь. Береги себя. Mike – user2236181

1
$jsonString = json_encode($phpArray); 

В JavaScript: -

var jsonStr = <?=$jsonString?>;