[Users] Help with OpenLayers.Format.GeoJSON
Eric Lemoine
eric.lemoine at camptocamp.com
Mon Sep 13 19:04:13 CEST 2010
On Monday, September 13, 2010, Pol <d.paolino at gmail.com> wrote:
> Hello all,
> I'm moving my whole project to the Drupal Framework and I'm using the services module who can send data in many format(xml, json, amfphp, etc etc).
> Before using it, I was using simple php to send the data to my store, like this:
>
> MarkersStore = new GeoExt.data.FeatureStore({
> layer: MarkersLayer,
> proxy: new GeoExt.data.ProtocolProxy({
> protocol: new OpenLayers.Protocol.HTTP({
> url: get_markers.php,
> format: new OpenLayers.Format.GeoJSON({
> 'internalProjection': proj900913,
> 'externalProjection': proj4326
> }),
> readWithPOST: true
> })
> }),
> autoLoad: false,
> });
>
> Now I have to modify my code to get it working with the tools provided by this amazing framework.
> My Json code look like this now:
> { "#error": false,
> "#data": {
> "type": "FeatureCollection",
> "features": [
> {
> "geometry": {
> "type": "Point",
> "coordinates": [
> 4.35205865469,
> 50.8235093311
> ]
> },
> "properties": {
> "img": "sites/default/modules/lukoil/lukoil.jpg",
> "inf": "Lukoil ID 3",
> "html": null
> }
> }]
> }
> }
>
> The FeatureCollection I use to parse is now embedded in another container.
> That means that my old FeatureStore is no more working with those data and I don't know how to solve this.
>
> Any idea ?
> My store look like this now:
> MarkersStore = new GeoExt.data.FeatureStore({
> layer: MarkersLayer,
> proxy: new GeoExt.data.ProtocolProxy({
> protocol: new OpenLayers.Protocol.HTTP({
> url: /services/json,
> params: {'method':'\"markers.get\"'},
> format: new OpenLayers.Format.GeoJSON({
> 'internalProjection': proj900913,
> 'externalProjection': proj4326
> }),
> readWithPOST: true
> })
> }),
> autoLoad: false,
> });
>
> Thanks for the help !
Hi
This framework isn't so amazing since it doesn't support GeoJSON.
Sorry I couldn't resist :-)
The representation format of the received data is not GeoJSON, so it's
no surprise that Format. GeoJSON cannot read that.
What you can do is define your own Format, with something like that for example:
new OpenLayers.Format.GeoJSON({
read: function() {
var obj = OpenLayers.Format.JSON.read.apply(this, arguments);
return OpenLayers.Format.GeoJSON.read.apply(this, [obj]);
}
});
Cheers,
--
Eric Lemoine
Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex
Tel : 00 33 4 79 44 44 96
Mail : eric.lemoine at camptocamp.com
http://www.camptocamp.com
More information about the Users
mailing list