Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am working on a project that uses openlayers where IE8 compatability is a requirement. Unfortunately, there seems to be some performance issues with OpenLayers in IE8 when parsing a large number of polygons / points from server side data.

I have already developed a custom data exchange format based on JSON (After experimenting with both GeoJSON and WKT) which has yielded a large performance boost, but I still think I need more.

One current bottleneck in the application seems to be in initializing points - I have a test case where I am initializing geometries with over 85000 points and it takes a few seconds on a virtualized IE8 box.

I will be implementing strategies of lazy initialization, but it also occurred to me that in server side libraries like JTS, multi-point, line string, and linear ring instances may be backed by a packed coordinate sequence - a single array containing all required ordinates

http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/geom/impl/PackedCoordinateSequence.Double.html

Has anybody seen any examples of using this pattern with OpenLayers, or can anybody provide any insight or advice in implementing it? Aside from creating the geometry type objects themselves, I would need to add support for these types to the renderers. Are there any other places where I would need to add support for them?

In short, what are the steps required in order to add support for custom geometry type to OpenLayers?

Thanks

share|improve this question
    
BTW, the data in question is typically already generalised on the server side, so generalising it further may result in an unacceptable level of error. –  tofarr Sep 11 '12 at 10:05
    
Are you using Strategies like cluster or bbox to filter incoming results before drawing on the map ?? –  Myra Sep 11 '12 at 13:36
    
@Myra - I am using bbox filtering and point clustering (With some customisation for performance) to limit what actually gets rendered. The bottleneck is mainly apparent in IE8 (and below), and seems to be due to the overhead of allocating memory and invoking constructors for each of the 85000 point objects as used in the geometries. According to the profilers, Chrome, Firefox and IE9 seem to perform these operations at ~10 times faster than IE8, and therefore do not have the same difficulty. –  tofarr Sep 11 '12 at 15:19
    
Have you tryed replace vector format by WMS? It will increase performance of your application, but have disadvantages of course. –  Odoakr Sep 12 '12 at 6:31
    
@Odakr : I am using WMS for most of the layers in the map, but this is a special case - I have a table of search results below the map, displaying data requested by the user. In an environment with a mouse, when the user hovers over a result in the table or on the map, it will be highlighted in both the table and on the map. For these operations, calling a WFS server was generally too slow, so I do the calculations on the client side. With the datasets I have, this works fine in most browsers except IE8, hence the original question. –  tofarr Sep 12 '12 at 9:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.