[OpenLayers-Dev] Need newbie help on developing custom layer
Tim Schaub
tschaub at opengeo.org
Wed Feb 3 13:00:04 EST 2010
Vincent Gulinao wrote:
> I'm a total newbie on Openlayers, and map dev in general, so I'm a little
> lost how to start.
>
> I need to develop custom layer defining map political boundaries just like
> this: http://www.google.com/intl/en_us/2008election/.
>
> I'd appreciate pointers, code sample and docs links, learning path
> suggestions, etc. that you may share.
>
You need a number of things to accomplish this.
You'll need spatial data for your political boundaries. This will
include whatever attribute data you want to display to the user
(election results per state or whatever).
If you want to render the data in the browser and have the user interact
with features (states), you'll need to set up something to serve up the
vector data. If your data never changes, you could store your data on
the filesystem in some format like GeoJSON and have Apache serve it up
(e.g. http://example.com/data/states.json).
If you go this route, you could set up a map in OpenLayers using a
vector layer (OpenLayers.Layer.Vector) with a fixed strategy
(OpenLayers.Srategy.Fixed) and the HTTP protocol
(OpenLayers.Protocol.HTTP) using the GeoJSON format
(OpenLayers.Format.GeoJSON).
Somewhat relevant example (using GML format instead of GeoJSON):
http://openlayers.org/dev/examples/behavior-fixed-http-gml.html
Alternatively, if you want to allow users to query your data based on
location or attribute (e.g. get all states in this box, get all states
that voted for G.W.), you will want to set up a service that can
dynamically serve up vector data based on user queries. A Web Feature
Service (WFS) is designed to do just this. GeoServer and MapServer are
examples of a WFS.
If you go this route, you could set up a map in OpenLayers using a
vector layer with a fixed or bounding box strategy
(OpenLayers.Strategy.BBOX) and the WFS protocol (OpenLayers.Protocol.WFS).
somewhat relevant example:
http://openlayers.org/dev/examples/wfs-states.html
Both of the above approaches request vector data from your server and
render the results in the browser. This has the advantage of letting
you dynamically style the data on the client and lets your users
interact with the data attributes (with less latency).
See the style examples (http://openlayers.org/dev/examples/?q=style) to
learn about applying custom styles client-side.
See the feature selection & popup example to learn how to display
feature attributes in a popup (assuming you have feature data client
side): http://openlayers.org/dev/examples/select-feature-openpopup.html
As an alternative to rendering the data client side (as outlined above),
you can set up a service to render your data on the server. The Web Map
Service (WMS) is designed to provide feature rendering on the server.
GeoServer and MapServer are WMS implementations.
If you go this route (render data on the server), you configure your
OpenLayers map with a WMS layer (OpenLayers.Layer.WMS). Many of the
OpenLayers examples use a WMS layer (e.g.
http://openlayers.org/dev/examples/wms.html).
If your server is responsible for rendering feature data (political
boundaries) instead of the browser, to allow your users to view feature
attributes (who voted for G.W.) you need to configure your OpenLayers
map to issue request for feature information.
The WMS protocol defines a GetFeatureInfo method for this purpose.
Here's an example that issues GetFeatureInfo requests and displays the
result in a popup:
http://openlayers.org/dev/examples/getfeatureinfo-popup.html
The drawback of requesting all your vector data client side is that you
can swamp the browser while trying to parse or render the features. You
need to use appropriate strategies to limit the quantity of data that is
parsed and rendered. The drawback of leaving all your vector data on
the server is that there is more latency in displaying feature
attributes to the user (user waits while requests are issued to the server).
None of this requires that you develop a custom OpenLayers layer type.
It does require that you set up the appropriate services on the back-end.
Hope this helps get you started.
Tim
> TIA.
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Dev mailing list
> Dev at openlayers.org
> http://openlayers.org/mailman/listinfo/dev
--
Tim Schaub
OpenGeo - http://opengeo.org
Expert service straight from the developers.
More information about the Dev
mailing list