2013-10-25 5 views
0

У меня есть карта США в формате SVG. Мне нужно, чтобы каждое состояние заполнялось цветом в зависимости от значения цвета, сохраненного для состояния в файле MySQL, который заполняется пользователями через форму PHP.Как использовать PHP/MySQL для управления цветом заливки SVG?

Чтобы пояснить, в моей программе php, отображающей карту США как SVG, вот мой первоначальный код, где только для иллюстративных целей я имею жестко закодированное первое состояние, на Аляске, красным:

$(document).ready(function() { 
    $('#map').usmap({ 
    stateSpecificStyles': { 'AK' : {fill: '#f00'} 
}, 

и т.д., ... повторить для каждого государства ...

и то, что я хотел бы сделать, это заменить «заполнить:«# f00" со значением цвета, хранящегося в поле цвета шестигранной на записи MySQL для AK.

Итак, мой вопрос:

Как передать шестнадцатеричное значение цвета, хранящееся в записи MySQL для состояния к объекту SVG для этого состояния, и, таким образом, быть в состоянии применить цвет заливки для него?

+0

что ваш вопрос? – underscore

+0

Почему бы не сохранить цвета для каждого из состояний в БД, а затем использовать JSON как объект в функции 'usmap'? – eithed

+0

@eithed: Я понимаю, что каждый ключ в объекте JSON был бы аббревиатурой состояния (например, «AK»), но как именно я могу присвоить значение цвета MySQL состояния его ассоциированному значению JSON? – user2377927

ответ

0

Я думаю, проблема в том, что вам не хватает некоторых кавычек по всему цвету. Вместо того, чтобы:

$('#map').usmap({ 'stateSpecificStyles': { 'AK' : {fill: <?php echo '#f00'; ?>} } }); 

попробовать:

$('#map').usmap({ 'stateSpecificStyles': { 'AK' : {fill: '<?php echo '#f00'; ?>'} } }); 
+0

@BigBadBaboom: да, это был он, забыл эти одинарные кавычки! Спасибо! – user2377927

1

Как включить SVG? Он встроен или встроен через <image> или <object>? Ответ повлияет на решение.

Предполагая, что на данный момент это встроено, вот как я это сделаю.

Дайте каждому из состояний идентификатор. Например.

<g id="AK"> ... </g> 

Затем вы можете добавить стили CSS (встраивается в PHP скрипт):

#AK {fill: red;} 

или вы можете установить его непосредственно с помощью JS (например, читать как JSON и применяется в OnLoad.):

document.getElementById("AK").style.fill = "red"; 
+0

Спасибо за информацию. Я использую встроенный SVG и настроил его так, чтобы я мог вручную настраивать цвета каждого состояния. Я еще не понимаю, как динамически получить цветовой код из базы данных и применить его к одному из двух методов (CSS или JS). Как настроить цикл PHP для получения значения из поля цвета и, таким образом, применить его к CSS или JS? Другими словами, как бы я сказал: document.getElementById («AK»). Style.fill = user2377927

+0

Я в замешательстве. Вы говорите, что не знаете, как получить его из базы данных? Или вы не знаете, как сделать цикл в PHP? Или вы не знаете, как добавить JavaScript в свой HTML-выход? –

+0

Я знаю, как использовать PHP для создания циклов и извлечения данных. Я не знаю, как получить значения, которые я извлекаю в свой код JavaScript, чтобы каждый штат знал, какой цвет будет заполнен. Другими словами, этот образец кода не работает, но показывает, что я пытаюсь сделать, чтобы заполнить состояние Аляски красным цветом: $ (документ).. Готовы (функция() { \t \t $ ('# карта') usmap ({ \t \t 'stateSpecificStyles': { \t \t \t 'АК': {заполнить: } \t \t}, – user2377927

Смежные вопросы