0

I have a PHP script that extract valid GeoJSON data from a database. Now I would like to prepare a grid view of these data with jqgrid, but I can't figure out the proper jsonReader for the javascript code.

This is my GeoJSON output:

{"type":"FeatureCollection",
"total":0, 
"page":1, 
"records":117, 
"features":[
     {"geometry":{"type":"Point","coordinates":[12.3,41.70052]},
      "type":"Feature",
      "properties":{
      "data":"2006-02-22",
      "specie":"S. coeruleoalba",
      "localita":"Ostia",
      "provincia":"Roma"
     },"id":0},
    {"geometry":{
     "type":"Point","coordinates":[15.26667,40.0502]},
     "type":"Feature",
     "properties":{
        "data":"2006-03-01",
        "specie":"S. coeruleoalba",
        "localita":"Golfo di Salerno",
        "provincia":"Salerno"
     },"id":1},
    {"geometry":{"type":"Point","coordinates":[14.88333,40.56692]},
     "type":"Feature",
     "properties":{
        "data":"2006-03-03",
        "specie":"S. coeruleoalba",
        "localita":"Battipaglia",
        "provincia":"Salerno"
    },"id":2}

]}

Using this reader my grid shows the right number of rows (117) and pages, but empty cells

jsonReader : { 
    root: "features", 
    page: "page", 
    total: "total", 
    records: "records", 
    repeatitems: false, 
    cell: "properties", 
    id: "id"
}

Can someone help me to write a working reader? Thanks in advance

user781065
  • 47
  • 1
  • 8
  • What columns you would like to have in the grid? The `properties` seems be mostly unclear. Are all other entries have the same `"specie"`, `"localita"` and `"provincia"` properties in the `properties` part of data? Just from one item it is difficult to understand how the data be. Could you include more items in the `"features"` array? – Oleg Oct 28 '11 at 21:57
  • Thx for the answer, I added some items to my Json – user781065 Oct 29 '11 at 08:41
  • You still don't wrote which columns you need to have in the grid. – Oleg Oct 29 '11 at 08:43

1 Answers1

0

Your main error is that you try to use cell: "properties", but cell property will be ignored in case of usage of repeatitems: false property.

You should just use

jsonReader: {
    root: "features",
    repeatitems: false
}

and then define jsonmap property for every column. For example you can use the following column definition:

colModel: [
    {name: 'coordX', jsonmap:'geometry.coordinates.0', width: 75, sorttype: 'number',
        formatter: 'number', formatoptions: {decimalPlaces: 5}},
    {name: 'coordY', jsonmap:'geometry.coordinates.1', width: 75, sorttype: 'number',
        formatter: 'number', formatoptions: {decimalPlaces: 5}},
    {name: 'data', jsonmap:'properties.data', width: 90, align: 'center',
        sorttype: 'date', datefmt: 'm/d/Y',
        formatter: 'date', formatoptions: {newformat: 'm/d/Y'}},
    {name: 'specie', jsonmap:'properties.specie', width: 100},
    {name: 'localita', jsonmap:'properties.localita', width: 100},
    {name: 'provincia', jsonmap:'properties.provincia', width: 80}
]

As the result you will be able to read your JSON data to the following grid:

enter image description here

(see the demo here). In your JSON data I changed only total value from 0 to 1 because it has no sense to have the total value less as the page value.

Oleg
  • 220,925
  • 34
  • 403
  • 798