【问题标题】:Parse Google Map String To an JS array将 Google Map 字符串解析为 JS 数组
【发布时间】:2018-12-15 04:37:09
【问题描述】:

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

例子:

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 ], ]

所以谷歌地图不接受这种格式,所以它不会加载地图。

我也试过 $.parseJSON 和 JSON.parse() 那么我如何转换它呢

【问题讨论】:

  • 转换对象数组并将响应发送到ajax。
  • 在数组comma 中打印最后一个元素后导致该问题时,不需要它。
  • 是的,单引号也引起了问题

标签: javascript php jquery ajax google-maps


【解决方案1】:

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

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

【讨论】:

  • 看起来我忘了把 php 代码放在一个字符串中。代码现在应该可以工作了
【解决方案2】:

好的,我读到了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 数据中也不允许使用额外的单词和符号。

【讨论】:

    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 2018-12-19
    • 2012-10-14
    • 2017-04-04
    • 2014-03-04
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多