[OpenLayers-Users] Implementing a layer for a proprietary WMS-like service

Franz Buchinger fbuchinger at gmail.com
Tue Aug 3 10:22:40 EDT 2010


In my case, creating the single-tiled map is rather expensive - because the
map image is generated "on-the-fly".

Therefore, I want my layer to "anticipate" the map action (zoom, pan), just
like the ImageLayer does.
I actually had a well working implementation of  my map viewer based on
ImageLayers, but all the logic (requesting new map etc) happened outside the
layer and caused side-effects with other layers.

I'm wondering if it would be better to derive my ProprietaryMapLayer from
ImageLayer.

I could extend it with a getUrlAsync method that fetches the map image url
based on the new extent after a map action was performed.

Would that work?

Franz

2010/8/3 <christopher.schmidt at nokia.com>

>
> On Aug 3, 2010, at 9:42 AM, ext Franz Buchinger wrote:
>
> > Hi Bart,
> >
> > yes, I've set these options. I noticed that these multiple requests only
> happen when I set transitionEffect: 'resize'.
>
> This is basically expected. The transition effect creates multiple tiles,
> and since
> creating images is generally considered to be 'cheap' in OpenLayers --
> since
> images should be served from cache -- we just create more tiles, rather
> than
> copying existing ones in any way.
>
> So this is by design; if you don't like the design, you'll need to do some
> more coding to fix it :)
>
> -- Chris
>
> > I'm using OpenLayers 2.9.1.
> >
> > Franz
> >
> >
> >
> > 2010/8/3 Bart van den Eijnden (OSGIS) <bartvde at osgis.nl>
> > Hi Franz,
> >
> > and have you verified you only have a single tile?
> >
> > Do you have singleTile: true, ratio: 1 and buffer: 0 in your layer
> options?
> >
> > Best regards,
> > Bart
> >
> > >  Hi Bart,
> > >
> > > I'm almost done with my layer implementation. The only problem: my
> > > getURLasync() Method gets triggered far too often (about 3x per
> pan/zoom
> > > action).
> > >
> > > How can I make sure that getURLasync is only triggered once per map
> > > action?
> > >
> > > Franz
> > >
> > > 2010/8/3 Bart van den Eijnden (OSGIS) <bartvde at osgis.nl>
> > >
> > >> Hi Franz,
> > >>
> > >> check out OpenLayers.Tile.Image.
> > >>
> > >> Best regards,
> > >> Bart
> > >>
> > >> > Hi Bart,
> > >> >
> > >> > thanks for the fast and helpful response!
> > >> >
> > >> > One question though: which class actually invokes the methods
> > >> > OpenLayers.Layer.ArcIMS.getUrl and OpenLayers.Layer.getUrlAsync?
> > >> >
> > >> > They seem to be overriden methods, but i couldn't find them in
> > >> > OpenLayers.Layer.Grid or OpenLayers.Layer.HTTPRequest.
> > >> >
> > >> > kind regards,
> > >> >
> > >> > Franz
> > >> >
> > >> > 2010/8/3 Bart van den Eijnden (OSGIS) <bartvde at osgis.nl>
> > >> >
> > >> >> Hi,
> > >> >>
> > >> >> I would advise you to look at OpenLayers.Layer.ArcIMS which uses a
> > >> >> similar
> > >> >> approach.
> > >> >>
> > >> >> Best regards,
> > >> >> Bart
> > >> >>
> > >> >> > Hi,
> > >> >> >
> > >> >> > I'm a frontend developer and was programming a web viewer for a
> > >> >> > proprietary,
> > >> >> > WMS-like map service.
> > >> >> > I discovered Openlayers one month ago and I'm really fascinated
> by
> > >> its
> > >> >> > awesome capabilities, so I decided to integrate our map service
> in
> > >> >> > OpenLayers.
> > >> >> >
> > >> >> > Here is a short description how the map service works:
> > >> >> >
> > >> >> > The client sends an AJAX request containing the current map
> bounds,
> > >> >> the
> > >> >> > map
> > >> >> > id and the pixel size of the map.
> > >> >> >
> > >> >>
> > >>
> map=22&px=1720&py=833&left=2504400&right=2544000&top=5699500&bottom=5669500&type=0
> > >> >> >
> > >> >> > The server responds with the generated map image (url) and the
> > >> >> corrected
> > >> >> > bounds:
> > >> >> > <MapProperties>
> > >> >> >   <mapLeft>2493227.6110444176</mapLeft>
> > >> >> >   <mapTop>5699500</mapTop>
> > >> >> >   <mapRight>2555172.3889555824</mapRight>
> > >> >> >   <mapBottom>5669500</mapBottom>
> > >> >> >   <mapType>0</mapType>
> > >> >> >   <overviewMap>22</overviewMap>
> > >> >> >   <url>
> > >> >> http://localhost/cgmCache/41600065-c3d2-4934-9feb-78a32f6668c8.png
> > >> >> > </url>
> > >> >> > </MapProperties>
> > >> >> >
> > >> >> > The maps are always single-tiled.
> > >> >> >
> > >> >> > My first approach was to write a ProprietaryMapLayer, that
> executes
> > >> >> the
> > >> >> > map
> > >> >> > request and creates an ImageLayer with the result url and its
> > >> bounds.
> > >> >> > When the ImageLayer is moved, a new request is performed, the
> > >> current
> > >> >> > ImageLayer is destroyed and a new one generated. The
> disadvantage:
> > >> >> there
> > >> >> > are
> > >> >> > now 2 layers representing one map, which leads to confusion in
> the
> > >> >> layer
> > >> >> > switcher control.
> > >> >> >
> > >> >> > I read over the code of Layer.WMS, which inherits from Layer.Grid
> > >> and
> > >> >> also
> > >> >> > makes use of Tile.Image, but it's difficult to derive a solution
> > >> from
> > >> >> it,
> > >> >> > since all the request/response handling is already integrated
> into
> > >> the
> > >> >> > layer. Furthermore, WMS simply responds with tile images, whereas
> I
> > >> >> have
> > >> >> > to
> > >> >> > deal with an xml response.
> > >> >> >
> > >> >> > Any ideas how I could implement my layer?
> > >> >> >
> > >> >> > kind regards,
> > >> >> >
> > >> >> > Franz
> > >> >> > _______________________________________________
> > >> >> > Users mailing list
> > >> >> > Users at openlayers.org
> > >> >> > http://openlayers.org/mailman/listinfo/users
> > >> >> >
> > >> >>
> > >> >>
> > >> >> --
> > >> >> Looking for flexible support on OpenLayers or GeoExt? Please check
> > >> out
> > >> >> http://www.osgis.nl/support.html
> > >> >>
> > >> >> Bart van den Eijnden
> > >> >> OSGIS
> > >> >> bartvde at osgis.nl
> > >> >>
> > >> >>
> > >> >
> > >>
> > >>
> > >> --
> > >> Looking for flexible support on OpenLayers or GeoExt? Please check out
> > >> http://www.osgis.nl/support.html
> > >>
> > >> Bart van den Eijnden
> > >> OSGIS
> > >> bartvde at osgis.nl
> > >>
> > >>
> > >
> >
> >
> > --
> > Looking for flexible support on OpenLayers or GeoExt? Please check out
> > http://www.osgis.nl/support.html
> >
> > Bart van den Eijnden
> > OSGIS
> > bartvde at osgis.nl
> >
> >
> > <ATT00001..txt>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20100803/9ed7a420/attachment.html


More information about the Users mailing list