我正在编写一个wordpress循环,该循环获取多个帖子,并在基于php的数组中输出帖子自定义字段GeoJson坐标数组。
请参见下面的$sFeatureCoordinates
变量的内容。
[
[
-0.7332730293273926,
51.89886634382943
],
[
-0.7326534390449524,
51.89770778622719
],
[
-0.7318434119224548,
51.898079355455344
],
[
-0.7332730293273926,
51.89886634382943
]
]
然后在我的php数组下面查看,然后使用json_encode
格式化该数组。
$arr = [
'type' => 'FeatureCollection',
'features' => []
];
// loop through each post
while($oQuery->have_posts()): $oQuery->the_post();
// grab our type and coordinates
$sFeatureType = get_field('geojson_feature_type');
$sFeatureCoordinates = get_field('geojson_feature_coordinates');
// add this to our features
$arr['features'][] = [
'type' => 'Feature',
'properties' => [
'id' => get_the_id(),
'name' => get_the_title()
],
'geometry' => [
'type' => $sFeatureType,
'coordinates' => [
[ preg_replace('/\s+/', '', $sFeatureCoordinates) ]
]
]
];
endwhile;
$json = json_encode($arr);
上方数组输出的json示例
我遇到的问题是coordinates
在被编码时被用引号引起来。
当我的Google Maps脚本尝试读取js时,会导致js错误。
关于如何阻止coordinates
上的内容用引号引起来的任何想法?
非常感谢
答案 0 :(得分:2)
$sFeatureCoordinates
是JSON,因此只需对其解码并添加到数组中即可。然后,当您json_encode
时,一切都会解决。根据需要添加或删除[ ]
以获得正确的嵌套级别:
'coordinates' => [ [ json_decode($sFeatureCoordinates, true) ] ]