jeudi 26 février 2015

Fetching postgis data through php json and passing to leaflet map


I am new to this and trying to explore leaflet and geojson a bit. Please help me with this.


This is my php page which I am using to fetch data from PostGIS. (the data opened successfully in the browser)



$sql = "SELECT *, (ST_AsGeoJSON(geom)) AS Geojson FROM public.village_boundary_metro";


$rs = pg_query($dbconn4, $sql); if (!$rs) { echo "An SQL error occured.\n"; exit; } $output = ''; $rowOutput = '';


while ($row = pg_fetch_assoc($rs)) { $rowOutput = (strlen($rowOutput) > 0 ? ',' : '') . '{"type": "Feature", "geometry": ' . $row['geojson'] . ', "properties": {'; $props = ''; $id = ''; foreach ($row as $key => $val) { if ($key != "geojson") { $props .= (strlen($props) > 0 ? ',' : '') . '"' . $key . '":"' . escapeJsonString($val) . '"'; } if ($key == "id") { $id .= ',"id":"' . escapeJsonString($val) . '"'; } }



$rowOutput .= $props . '}';
$rowOutput .= $id;
$rowOutput .= '}';
$output .= $rowOutput;


} $output = '{ "type": "FeatureCollection", "features": [ ' . $output . ' ]}'; echo json_encode($output);


And now I try to extract this resultant data through Ajax as a geojson layer on a leaflet powered map.(ajax code follows)



$.ajax({
type: "GET",
url: 'geojson_entry_postgis.php',
data: data,
dataType: 'json',
success: function (data) {

var geojson = new L.geoJson(data).addTo(map);


}})


Also tried this way..



var geojson = L.geojson('geojson_entry_postgis.php?geotable=village_boundary_metro&geomfield=geom', { style: {"color":"#ff7800","weight":2}, maxZoom: 6, onEachFeature: onEachFeature }).addTo(map);


However the data fetched from postgis does not display as geojson layer on the map as expected. Please let me know where I am going wrong and Am I following the right process??


P.S. Ajax function runs fine in other examples.





Aucun commentaire:

Enregistrer un commentaire