将Google Map字符串解析为JS数组

时间:2018-12-15 04:37:10

标签: javascript php jquery ajax google-maps

我开发了一种谷歌地图功能,可以在调用时根据传递的数据绘制谷歌地图

示例:

function DrawMap(data){
   //code to draw google map
}

数据以以下格式传递

['Bondi Beach', -33.890542, 151.274856],

但是数据来自php 所以默认情况下,我发送的数据是

var defaultLocation = [
    <?php
        foreach ($db_data as $mvalue) {
            echo "[ '".$mvalue['vTripStatus']."',".$mvalue['vLatitude'].",".$mvalue['vLongitude']." ],";
        } 
    ?>
];

但是我单击按钮后发生了一个事件,该事件执行了ajax调用,因此在ajax中,数据以以下格式作为字符串返回(当我console.log()时)

[[ 'Active',23.0123022,72.5033961 ],[ 'Arrived',23.0088,72.4823 ],[ 'On Going Trip',22.9938,72.4713 ], ]

因此Google地图不接受此格式,因此它不会加载地图。

我也尝试了$ .parseJSON和JSON.parse() 那么我如何将其转换为

enter image description here

2 个答案:

答案 0 :(得分:0)

看起来PHP输出的值是字符串。试试:

var defaultLocation = JSON.parse(`
    <?php
        $arr = [];
        foreach ($db_data as $mvalue) {
            $arr[] = [ $mvalue['vTripStatus'], $mvalue['vLatitude'], $mvalue['vLongitude'] ];
        }
        echo json_encode($arr);
    ?>
`);

答案 1 :(得分:0)

好,我读了这个Can you use a trailing comma in a JSON object?

问题是单引号和一个逗号分隔

[
  [ 'Active',23.0123022,72.5033961 ],
  [ 'Arrived',23.0088,72.4823 ],
  [ 'On Going Trip',22.9938,72.4713 ],
]

在解析json数据时会导致问题。 因此,如果您在json数据中使用字符串,则必须强制使用双引号(“)而不是单引号(”)

以及json数据中也不允许使用多余的单词和符号。