我正在使用Symfony和MapFish插件http://www.symfony-project.org/plugins/sfMapFishPlugin开发一个WebGIS应用程序
我使用MapFish生成的GeoJSON通过OpenLayers渲染层,当然是在矢量层中。
当我展示高达3k特性的图层时,一切都很好。当我尝试使用具有10k或更多功能的层时,应用程序崩溃。我不知道阈值,因为我要么有2-3k特征的层,要么有10-13k特征的层。
我认为这个问题与教条有关,因为日志中的最后一个报告是这样的:
Sep 02 13:22:40 symfony [info] {Doctrine_Connection_Statement} execute :然后查询以获取地理记录。
我说我认为问题出在功能的数量上。因此,我使用OpenLayers.Strategy.BBox()来减少要获取和显示的特性的数量。结果是一样的。应用程序似乎在执行查询时卡住了。
如果我对用于获取特性的GeoJSON的查询字符串添加一个限制,应用程序就会正常工作。所以我不认为这与MapFish插件有关,而是与Doctrine有关。
有谁有什么启示吗?谢谢!
发布于 2011-09-02 21:12:40
即使理论上可行,尝试在地图上显示如此多的矢量要素也不是一个好主意。你最好改变功能的显示方式(例如:低缩放级别的栅格,单击即可获取要素(…)。
即使您的服务在合理的时间内响应,您的浏览器也会卡住,或者至少会有非常差的性能…我是sfMapFishPlugin的作者,我从来没有尝试过查询这么多要素,甚至更少尝试在OL地图上显示它们。
查看关于这个主题的OpenLayers常见问题解答:http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#WhatisthemaximumnumberofCoordinatesFeaturesIcandrawwithaVectorlayer,在最近的浏览器改进中有点过时,但在地图上使用10k矢量要素是不合理的。
HTH,
https://stackoverflow.com/questions/7282992
复制相似问题