使用json_encode从PHP数组填充Google Map Markers

时间:2014-04-17 07:36:39

标签: javascript php arrays google-maps google-maps-api-3

当我使用硬编码的javascript数组作为地图标记的输入时,标记显示得很好,所以我知道我用来显示标记的代码是好的。

我的问题是当我尝试使用json_encode转换php多数组时,地图上没有任何内容显示。

硬编码标记是:

var locations = [
           ['Sausalito', 37.8590937, -122.4852507,'url'],
           ['Sacramento', 38.5815719, -121.4943996,'url'],
           ['Soledad', 36.424687, -121.3263187,'url'],
           ['Shingletown', 40.4923784, -121.8891586,'url']
       ];

他们工作。

php数组是:

$locations = array(array(Sausalito, 37.8590937, -122.4852507,'url'),array(Sacramento, 38.5815719, -121.4943996,'url'));

生成数组,

Array
(
    [0] => Array
        (
            [0] => Sausalito
            [1] => 37.8590937
            [2] => -122.4852507
            [3] => url
        )
    [1] => Array
        (
            [0] => Sacramento
            [1] => 38.5815719
            [2] => -121.4943996
            [3] => url
        )
)

所以没问题。

现在当我json_encode上面的数组

var locations = '<?php echo json_encode($locations); ?>';

javascript地图代码无法读取它。如果我打印变量

document.write(locations);

它显示为

[["Sausalito",37.8590937,-122.4852507,"url"],["Sacramento",38.5815719,-121.4943996,"url"]]

它看起来像上面的硬编码,但它不会被与硬编码数据一起使用的地图代码读取。

请有人帮助我,非常感谢。

1 个答案:

答案 0 :(得分:1)

删除单引号,否则locations将是一个字符串而不是数组:

var locations = '<?php echo json_encode($locations); ?>';
//--------------^--------------------------------------^