如何使用 PHP/MySQL 来管理 SVG 的填充颜色


How To Use PHP/MySQL To Manage Fill Color of SVG?

我有一张SVG格式的美国地图。我需要用一种颜色填充每个状态,具体取决于用户通过 PHP 表单填充的 MySQL 文件中为状态存储的颜色十六进制值。

为了进一步解释,在我的将美国地图显示为SVG的php程序中,这是我的初始代码,仅出于说明目的,我将第一个州阿拉斯加硬编码为红色:

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

等。。。对每个状态重复此操作...

我想做的是将"填充:"#f00"替换为存储在 AK MySQL 记录的十六进制色域中的颜色值。

所以,我的问题是:

如何将存储在 MySQL 记录中状态的颜色十六进制值传递给该状态的 SVG 对象,从而能够为其应用填充颜色?

SVG 是如何被包含的? 它是内联的,还是通过<image><object>嵌入的? 答案将影响解决方案。

假设目前它是内联的,这就是我会怎么做。

给每个州一个 ID。 例如。

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

然后你可以添加CSS样式(添加到PHP脚本中):

#AK {fill: red;}

或者你可以直接使用JS设置它(例如,读取为JSON并在onLoad上应用):

document.getElementById("AK").style.fill = "red";
我认为

问题是您在颜色周围缺少一些引号。 而不是:

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

尝试:

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