GeoJSON的PHP格式

GeoJSON的PHP格式,php,arrays,geojson,Php,Arrays,Geojson,尝试使用PHP格式化GeoJSON(多边形)几何体部分的数据 返回如下所示的记录: {"type": "Polygon", "coordinates": [[[-101.4073933... 我的代码到目前为止,我尝试了3种不同的方式格式化几何体块,都失败了: while ($res = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $msg [] = array( 'type' => 'Feature', '

尝试使用PHP格式化GeoJSON(多边形)几何体部分的数据

返回如下所示的记录:

{"type": "Polygon", "coordinates": [[[-101.4073933...
我的代码到目前为止,我尝试了3种不同的方式格式化几何体块,都失败了:

while ($res = mysqli_fetch_array($result,MYSQLI_ASSOC)) {

$msg [] = array(
        'type' => 'Feature',

        'geometry' => 
            $res['Geo'],
         /// ERROR  "geometry" member should be object, but is an String instead
        //"geometry":"{\"type\": \"Polygon\", \"coordinates\": [[[-104.05361517875079, 41.698


        'geometry' => array(
            $res['Geo'],
        ),   ///ERROR "geometry" member should be object, but is an Array instead
        //"geometry":["{\"type\": \"Polygon\", \"coordinates\": [[[-104.05361517875079, 41.6


        'geometry' => array(
            'type' => $res['Geo'].['type'],
            'coordinates' => $res['Geo'].['coordinates'],
        ),  
        //"geometry":{"type":"{\"type\": \"Polygon\", \"coordinates\": [[[[-122.4020155875262, 48.22521
结果应该是这样的:

"geometry": { "type": "Polygon", "coordinates": [[[  -73.3450469

ST_AsGeoJSON
返回顾名思义的JSON。这意味着
$res['Geo']
是一个字符串,一个JSON字符串,表示一个GeoJSON对象。如果您将该字符串放入一个PHP数组中,稍后对其进行
json\u编码
,那么您将生成一个字符串的json编码。相反,您需要的是一个数组或对象,然后可以对其进行
json\u编码
,它将是json中的一个对象,而不是字符串

因此,JSON解码您从数据库获得的值以获得PHP对象:

$msg[] = array(
    'type' => 'Feature',
    'geometry' => json_decode($res['Geo']),
    ...
);
稍后进行JSON编码时,
$msg
如下所示:

"geometry": {"type": "Polygon", "coordinates": ...}

ST_AsGeoJSON
返回顾名思义的JSON。这意味着
$res['Geo']
是一个字符串,一个JSON字符串,表示一个GeoJSON对象。如果您将该字符串放入一个PHP数组中,稍后对其进行
json\u编码
,那么您将生成一个字符串的json编码。相反,您需要的是一个数组或对象,然后可以对其进行
json\u编码
,它将是json中的一个对象,而不是字符串

因此,JSON解码您从数据库获得的值以获得PHP对象:

$msg[] = array(
    'type' => 'Feature',
    'geometry' => json_decode($res['Geo']),
    ...
);
稍后进行JSON编码时,
$msg
如下所示:

"geometry": {"type": "Polygon", "coordinates": ...}

如果仔细观察
geomatry
是一个字符串,而不是一个对象,请尝试查看网站上的答案,尤其是其中发布的github api。它是双重编码的。你可以注意到,因为
\”
之前的
类型
。如果你仔细看
geomatry
是一个字符串,而不是一个对象,你可以注意到,因为
\”
之前的
类型
,你可以注意到。