[OpenLayers-Users] GeoJSON layer on top of google - repeated load of features

Eric Lemoine eric.c2c at gmail.com
Wed Jul 2 09:55:27 EDT 2008


Hi. How about that:

var format = new OpenLayers.Format.GeoJSON({externalProjection: new
OpenLayers.Projection('EPSG:4326'),internalProjection:
map.getProjectionObject()});

Note that i haven't tested this.

Eric

2008/7/2, Adorian Ardelean <mynature at gmail.com>:
> Hi,
>
> First of all thank you for the prompt suggestion. Worked perfectly and I was
> able to include also a style to work with properties defined within GeoJSON
> file:
> *
> specimens = new OpenLayers.Layer.GML("specimens", "geojson.php", {format:
> OpenLayers.Format.GeoJSON, projection: new
> OpenLayers.Projection("EPSG:4326"), styleMap: new
> OpenLayers.StyleMap(style)});*
>
> The situation I've encountered now is that data from this layer has to be
> regenerated with every zoomend event (I do some clustering on server side to
> limit the number of features to less than 100 points - the return could be
> easily in hundreds or more). The part with zoomend event I can handle.
> However, I do not know what is the best strategy to handle this situation
> further:
>
> 1. delete the whole layer and recreate a new GML layer (using code above)
> every time? This produces some problems in handling controls (as I interpret
> from reaction of the scripts). The controls dedicated to layer "specimens"
> does not function anymore. I have to redeclare it again.
>
> 2. create a vector layer and load and delete features with zoom events
> without removing layer and controls.
>
> For second solution I have found the piece of code below, (which also works)
> but returns me to the initial question how do I specify in this context
> projection an style parameters?:
>
> *OpenLayers.loadURL("geojson.php", {}, null, styleMap: new
> OpenLayers.StyleMap(style)}, onLoadgml, onLoadFailedgml);
>
> function onLoadgml(r) {
>      if (r.status == 200) {
>         var p = new OpenLayers.Format.GeoJSON();
>          var f = p.read(r.responseText);
>          specimens.addFeatures(f);
>      }
> }*
> *
> ....
>
> *I would somehow prefer the second strategy. Could somebody give me a hint
> on how to include *{format: OpenLayers.Format.GeoJSON, projection: new
> OpenLayers.Projection("EPSG:4326")* in script so that OL renders vector
> features at the right place*?
>
> *All the best,
> Adorian
>
> On Sat, Jun 28, 2008 at 5:32 PM, Christopher Schmidt <
> crschmidt at metacarta.com> wrote:
>
>> On Sat, Jun 28, 2008 at 04:39:19PM +0200, Adorian Ardelean wrote:
>> > Hi,
>> >
>> > I am trying to load a GeoJSON file in a layer on top of a google map
>> > (OpenLayers 2.6).
>> >
>> > I used for now:
>> > var colfeatures = new OpenLayers.Layer.GML("specimens", "geojson.php",
>> > {format: OpenLayers.Format.GeoJSON});
>> > map.addLayer(colfeatures);
>> >
>> > Entities show up on the map somewhere close to 0,0. For other vector
>> > entities (coordinates) I push through code this is solved with
>> >
>> > var g = new OpenLayers.Projection("EPSG:4326");
>> > var p = new OpenLayers.Projection("EPSG:900913");
>> >
>> > and .tranform(g,p)
>> >
>> > but I do not know how to apply this directly on features read from
>> GeoJSON.
>> > Is there a way to loop through all entities in colfeatures and apply
>> > transform(g.p) or can somebody suggest me a better approach?
>> {format: OpenLayers.Format.GeoJSON} ->
>>  { format: OpenLayers.Format.GeoJSON,
>>   projection: new OpenLayers.Projection("EPSG:4326")
>>  }
>>
>> Regards,
>> --
>> Christopher Schmidt
>> MetaCarta
>>
>
>
> http://mybiosis.info
>



More information about the Users mailing list