My general Problem is to maintain a lot of markers. For the beginning I want to display all Bus Stops of Berlin, Germany and surroundings as Markers. I already got that I have to use a strategy like Startegy.BBOX for performance issuses (my dataset contains nearly 13000 Bus Stops). I found an Example where somebody gets his marker positions from a databases, parses it to a giant string and uses it with Format.Text. I guess this would work for me too, but I still wonder if thats the best way to do it. What if my dataset would be much bigger (maybe to display all bus stops worldwide)? I guess putting the whole content of the tatabase to a giant string and use Format.Text woulden't be a good idea than.

What would be the best way to do it? Is there a simple way to only load marker positions when they are actually needed instead of preloading them all?

1 Answer 1


There are two possible approaches:

  1. If you prefer to load all data points on your client and render it over JavaScript, you can use a clustering strategy to simplyfy rendering (latency and download time due to the enormous download volume are still an issue here). THer is a nice tutorial for animated clustering in open layers here
  2. Do the rendering on the serverside and only show the finished image on the client. Use Mapserver, Geoserver or another GIS Server Software of your choice for serving an OGC WMS or WFS Service. These are built to serve large amounts of data. Even when rendering onDemand gets to expensive due to millions of points to be rendered, you can use a Tiling Service like Geowebcache to prerender the map tiles, and query single items on demand over a Web Feature Service.

EDIT: You can also mix these two up, for example: Render a basic map image with your markers on the server and overlay markers in a different style rendered by openlayers that fit filter options for example.

So its a question of what scales best depending on the data and functions you need to provide.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.