我尝试将GeoJson图层(使用PHP从Postgres / PostGIS生成)添加到我的Google Maps API。
为此,我有一个用于生成json的PHP文件:
<?php
$dbconn = pg_connect("host=**** port=**** dbname=**** user=**** password=****");
$result = pg_query($dbconn, "SELECT json_build_object('type','FeatureCollection','name','Postes techniques','crs',json_build_object('type','name','properties',json_build_object('name','urn:ogc:def:crs:OGC:1.3:CRS84')),'features',(SELECT jsonb_agg(json_build_object('type','Feature','properties',json_build_object('libelle',libelle),'geometry',(ST_AsGeoJSON(ST_Transform(geom,4326))::json))) FROM test)) AS GeoJson");
if (!$result) {
echo "Error";
exit;
}
while ($row = pg_fetch_row($result)) {
echo $row[0];
}
?>
返回的是一个非常不错的GeoJson,他可以使用QGis或其他GIS软件:-)
在另一个文件中,我具有用于调用PHP文件的jQuery / AJAX技术,这是摘录:
var data = "";
$.ajax({
type: "POST",
url: 'file.php',
data: data,
success: function (data) {
alert(data);
var geojson = map.data.addGeoJson(data);
}})
但是这里没有成功,因为我收到以下消息:
如果我尝试像var geojson = map.data.addGeoJson({Featurecollection...});
这样直接cpoy / paste PHP的GeoJson结果,就可以了!
这是我的GeoJson的摘录:
{
"type": "FeatureCollection",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-0.975467289719626,
0.55607476635514
]
},
"properties": {
"libelle": "test 1"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
0.400700934579439,
-0.161214953271028
]
},
"properties": {
"libelle": "test 2"
}
}
]
}
您了解为什么这行不通吗?
非常感谢您。
答案 0 :(得分:1)
我找到了解决方案,我的GeoJson是 string 类型,并且代码需要 object ,所以我通过这种操作var geojson = map.data.addGeoJson(JSON.parse(data));
仅此而已:-)