I have a GIS web application and vector data that is going from the model to the web application. For developing the User Interface I am using JavaScript and OpenLayers. But sometimes the amount of geospatial data that I need to simultaneously visualize on a map is very big (10 000+ objects) and the browser cannot respond to all user requests. So, how can I speed up the process of visualization (both model and UI part) of large amounts of geodata?

  • Can you generalize (pre-process) your data for the web?
    – Mapperz
    Commented Nov 5, 2012 at 21:55

2 Answers 2


check out AnimatedCluster strategy for OpenLayers here for big data and good ui. you can find code example here.


beside this examine openlayers clustering example.

  • Cluster Strategy Example, here

  • Extended clustering, here

    i hope it helps you...

  • Is it possible to somehow cache objects in order to speed up visualization process?
    – Dmitri
    Commented Nov 6, 2012 at 8:44
  • 2
    AFAIK, you can cache your image tile OpenLayers.Control.CacheRead and CacheWrite method.
    – urcm
    Commented Nov 6, 2012 at 8:51

The techniques to solve your issue and improve vector web mapping are:

  • Generalisation: The objects to display should be simplified/aggregated in order to adapt their level of detail to the visualisation scale/zoom. In theory, there should be on data layer for each zoom level. The best is to use a multi-scale database. See this question for an overview of existing generalisation techniques.

  • Spatial index service and vector tilling: Only data in the view should be transferred and displayed. To make it possible, a spatial index service (if the objects are small and compact) or pre-computed vector tiles (if the objects are big) could be used.

The best is to use all three techniques as explained in this excellent document !

Your Answer

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

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