Na sua experiência, quantos recursos de ponto podem ser adicionados a uma camada de vetor OpenLayers (novo OpenLayers.Layer.Vector ("Point Layer")) antes de ficar inutilmente lento?
Meu caso de uso é exibir pontos de uma tabela de banco de dados. O usuário pode decidir qual período de tempo visualizar. Portanto, o resultado pode variar de muito poucos a potencialmente 100.000 pontos. Gostaria de introduzir um limite razoável e avisar o usuário se sua consulta retornaria mais recursos.
openlayers
web-mapping
underdark
fonte
fonte
Respostas:
Eu não tenho uma resposta definitiva para você, mas você montou uma página onde você pode brincar com diferentes números de pontos em um mapa OL: http://derekswingley.com/lab/olpts/
fonte
Se a exibição ficar lenta devido ao número de recurso muito alto, isso significa que os dados a serem exibidos não são adequados para o nível de zoom. Geralmente, quando a densidade dos recursos fica muito alta, a tela não pode mais ser legível (veja este exemplo ). Mesmo se não houvesse limite de processamento e todos os dispositivos de exibição pudessem exibir os recursos 1000000000000 em 0,001s em uma tela pequena, a visualização permaneceria impossível.
A lei do radix de Töpfer afirma que a densidade do recurso deve permanecer abaixo de um limite constante, independentemente do nível de zoom. Uma maneira de resolver esse problema e adaptar os dados à escala de visualização é transformá-lo usando operações de generalização como esta ou esta .
fonte
Eu não acho que não seja possível dar uma resposta sólida para esta pergunta. O ponto de renderização / polígonos depende totalmente do navegador e do hardware (CPU e memória), não dos OpenLayers. Eu tive um problema com o Openlayers e o IE6 para uma das renderizações do Lake (Polygon). mas, ele carregou bem no Firefox. E a melhor opção seria monitorar o uso de memória e CPU com o Chrome ou algumas ferramentas seriam melhores.
fonte
Como outros, não tenho resposta em relação a essa pergunta, mas a aplicação de uma estratégia BBox pode ajudá-lo a manter apenas os dados necessários, pois exibe apenas os recursos localizados na caixa delimitadora.
fonte
No OpenLayers 6, existe um renderizador de pontos WebGL que deve permitir a renderização de centenas de milhares de recursos, com filtragem baseada em tempo. Você pode conferir a versão mais recente do workshop oficial em https://openlayers.org/workshop/en/webgl/ .
Com o OpenLayers 2, que eu realmente não recomendo, o máximo para a taxa de quadros aceitável será apenas algumas centenas de recursos.
fonte
Eu tropecei em um caso de uso semelhante, não tenho certeza se ele atenderá às necessidades mencionadas acima, mas
Clustering
no OL 5 é o que eu adotei.O agrupamento, como as palavras sugerem, pega um grupo de pontos e os mescla em um único ponto. Por exemplo, você tem 100 pontos em determinada cidade. Todos os pontos serão visíveis como um ponto de um zoom de digamos,
4
mas como pontos individuais de um zoom de digamos diga10
que o que você pode fazer é quando o zoom é que4
você pode unir esses pontos como um, o que isso ajuda a reduzir o número de pontos a serem renderizados em uma área específica.Em outras palavras, digamos que você tenha 10.000 pontos a serem renderizados no mapa e eles estejam muito próximos um do outro, para que você possa criar agrupamentos deles e reduzir a renderização, e quando o usuário aproxima o zoom, você quebra os agrupamentos. Isso garantirá que você tenha menos renderização e melhor desempenho.
Satisfação no desempenho. Link para exemplos de cluster em Openlayers
fonte