如何使用PHP修改GoogleMap的大型json结构

如何使用PHP修改GoogleMap的大型json结构,php,json,google-maps,geojson,Php,Json,Google Maps,Geojson,我有一个谷歌地图,使用谷歌地图API从.json文件中绘制多段线。下面可以看到文件结构的一部分,它只是针对每个多边形特征重复。它是在GIS中创建的,然后转换为.geojson和json 我希望允许用户通过映射界面修改功能的特定属性。我已经构建了iterface和用户交互,但是在修改.json文件时遇到了问题 我尝试了以下方法: PHP(注意:我正在硬编码一些值以测试/使其工作) 错误: 警告:第行的字符串偏移量“UID”非法 注意:未定义的索引:UID在第行 想法: 我觉得我没有深入到json“

我有一个谷歌地图,使用谷歌地图API从.json文件中绘制多段线。下面可以看到文件结构的一部分,它只是针对每个多边形特征重复。它是在GIS中创建的,然后转换为.geojson和json

我希望允许用户通过映射界面修改功能的特定属性。我已经构建了iterface和用户交互,但是在修改.json文件时遇到了问题

我尝试了以下方法:

PHP(注意:我正在硬编码一些值以测试/使其工作)

错误:

警告:第行的字符串偏移量“UID”非法

注意:未定义的索引:UID在第行

想法:

我觉得我没有深入到json“树”中去访问属性。我以前没有修改过json数据,所以我有点不知所措。我是否应该更深入地了解这个结构?UID对于每个项目都是唯一的。谢谢

JSON文件

{
"type": "FeatureCollection",
"crs": {
    "type": "name",
    "properties": {
        "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
    }
},
"features": [{
    "type": "Feature",
    "properties": {
        "FULLNAME": "I-84 E",
        "RENDER_CL": 0,
        "FCC": "Highway",
        "clicked": "no",
        "UID": 25301
    },
    "geometry": {
        "type": "MultiLineString",
        "coordinates": [[[-72.70621818192563523552962578833103179931640625, 41.7494854544135023388662375509738922119140625], [-72.7059645455619971698979497887194156646728515625, 41.74953636350443275659927166998386383056640625], [-72.7057163637438179648597724735736846923828125, 41.749591818049879066165885888040065765380859375], [-72.705553636471080380943021737039089202880859375, 41.749633636231692435103468596935272216796875], [-72.7053663637438063460649573244154453277587890625, 41.749688181686252619329025037586688995361328125], [-72.705190909198364579424378462135791778564453125, 41.749742727140784381845151074230670928955078125], [-72.70496727283472182534751482307910919189453125, 41.749821818049866806177305988967418670654296875], [-72.704716363743813190012588165700435638427734375, 41.749924545322613766984432004392147064208984375], [-72.70461181828926555681391619145870208740234375, 41.74996818168625623002299107611179351806640625]]]
    }
}, {
    "type": "Feature",
    "properties": {
        "FULLNAME": "I-84 E",
        "RENDER_CL": 0,
        "FCC": "Highway",
        "clicked": "no",
        "UID": 25302
    },
    "geometry": {
        "type": "MultiLineString",
        "coordinates": [[[-72.7150890910165372815754381008446216583251953125, 41.749747272595328695388161577284336090087890625], [-72.7141218182892572485798154957592487335205078125, 41.7496918180498823858215473592281341552734375]]]
    }
},

您正在错误地访问对象的属性。正确的方法是
$entry['properties']['UID']

例子
我知道这与您的示例相符,但与我在问题中提供的结构不符。我已经尝试根据我提供的代码调整您的示例,从json文件中读取,但我得到了“注意:未定义索引:属性…”任何想法?您的数组没有模式,请尝试在执行任何操作之前检查属性是否已设置,例如:
isset($entry['properties']['UID'])和…
如何$数据['features'][0]['properties']['UID']。。。。这项工作。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。谢谢你的帮助。
{
"type": "FeatureCollection",
"crs": {
    "type": "name",
    "properties": {
        "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
    }
},
"features": [{
    "type": "Feature",
    "properties": {
        "FULLNAME": "I-84 E",
        "RENDER_CL": 0,
        "FCC": "Highway",
        "clicked": "no",
        "UID": 25301
    },
    "geometry": {
        "type": "MultiLineString",
        "coordinates": [[[-72.70621818192563523552962578833103179931640625, 41.7494854544135023388662375509738922119140625], [-72.7059645455619971698979497887194156646728515625, 41.74953636350443275659927166998386383056640625], [-72.7057163637438179648597724735736846923828125, 41.749591818049879066165885888040065765380859375], [-72.705553636471080380943021737039089202880859375, 41.749633636231692435103468596935272216796875], [-72.7053663637438063460649573244154453277587890625, 41.749688181686252619329025037586688995361328125], [-72.705190909198364579424378462135791778564453125, 41.749742727140784381845151074230670928955078125], [-72.70496727283472182534751482307910919189453125, 41.749821818049866806177305988967418670654296875], [-72.704716363743813190012588165700435638427734375, 41.749924545322613766984432004392147064208984375], [-72.70461181828926555681391619145870208740234375, 41.74996818168625623002299107611179351806640625]]]
    }
}, {
    "type": "Feature",
    "properties": {
        "FULLNAME": "I-84 E",
        "RENDER_CL": 0,
        "FCC": "Highway",
        "clicked": "no",
        "UID": 25302
    },
    "geometry": {
        "type": "MultiLineString",
        "coordinates": [[[-72.7150890910165372815754381008446216583251953125, 41.749747272595328695388161577284336090087890625], [-72.7141218182892572485798154957592487335205078125, 41.7496918180498823858215473592281341552734375]]]
    }
},
<?php

$json =
    '{
        "type": "Feature",
        "properties": {
            "FULLNAME": "I-84 E",
            "RENDER_CL": 0,
            "FCC": "Highway",
            "clicked": "no",
            "UID": 25302
        },
        "geometry": {
            "type": "MultiLineString",
            "coordinates": [[[-72.7150890910165372815754381008446216583251953125, 41.749747272595328695388161577284336090087890625], [-72.7141218182892572485798154957592487335205078125, 41.7496918180498823858215473592281341552734375]]]
        }
    }';

$obj = json_decode($json, true);

print $obj['properties']['UID'];