More Related Content
Similar to FOSS4G-FR 2014 : OpenLayers 3
Similar to FOSS4G-FR 2014 : OpenLayers 3 (15)
More from Camptocamp (20)
FOSS4G-FR 2014 : OpenLayers 3
- 8. Résumé des objectifs
â Richesse fonctionnelle
â Gestion de donnĂ©es 3D
â Gestion de vecteurs complexes
â QualitĂ© des rendus (retina)
â Performance et robustesse
« Les cartes sont des graphiques »
www.camptocamp.com / 8/24
- 10. Du vrai vecteur !
Les vecteurs sont dessinés trÚs souvent.
â pendant les animations
â pendant les interactions (pendant le "pinch-zoom" !)
Avantages :
â qualitĂ© du rendu â pas de "blur" suite Ă une rotation
â les labels et icĂŽnes ne tournent pas avec la carte
La dĂ©moâŠ
www.camptocamp.com / 10/24
- 11. Performance
Comment dessiner souvent et obtenir de bonnes performances ?
⚠Utilisation de techniques et algorithmes adaptés.
On pousse l'implémentation à ses limites !
www.camptocamp.com / 11/24
- 12. Simplification des géométries
On dessine des géométries simplifiées, pour ne pas dessiner des
"vertex" qui sont sur le mĂȘme pixel.
â Douglas Peucker
â "Quantization" â maintien de la topologie
La simplification permet aussi un rendu de meilleure qualité aux
petites Ă©chelles.
La dĂ©moâŠ
www.camptocamp.com / 12/24
- 13. Batching
On minimise les traitements et manipulations de données.
â calcul des styles
â simplification des gĂ©omĂ©tries
â lecture des features dans le R-tree
â et toutes les implications sur le garbage collector
⚠SystÚme de "batch/replay" dans le renderer. On réutilise le batch
pendant les animations et les interactions.
Important pour WebGL !
La dĂ©moâŠ
www.camptocamp.com / 13/24
- 15. Hit Detection
Pas de "hit detection" natif avec Canvas (et WebGL).
âš On redessine toute la "scĂšne" dans un canvas de 1x1 px, et on
teste si on a une couleur. RĂ©utilisation du batch.
Avantages :
â dĂ©tection parfaite au pixel
â tolĂ©rance pour la dĂ©tection de lignes sur device touch
â simple et efficace
La dĂ©moâŠ
www.camptocamp.com / 15/24
- 16. Compilateur Closure
Outil unique dans le monde JavaScript !
â Renommage des propriĂ©tĂ©s
â Ălimination du code non utilisĂ©
â Applatissage des namespaces
â DĂ©virtualisation des mĂ©thodes
â "Inlining"
www.camptocamp.com / 16/24
- 17. Exemple Compilateur Closure
goog.provide('ANamespace.ASubNamespace.AClass');
// une classe
ANamespace.ASubNamespace.AClass = function() {
this.aProperty = 'prop1';
};
// une méthode
ANamespace.ASubNamespace.AClass.prototype.aMethod = function() {
this.aProperty = 'change';
};
// une instance
var anInstance = new ANamespace.ASubNamespace.AClass();
// appel d'une méthode
anInstance.aMethod();
compilé en :
window.b=new function(){this.a="prop1"};window.b.a="change";
www.camptocamp.com / 17/24
- 18. Avantages du compilateur
GĂ©rer un gros volume de code.
â faire des petits "builds" d'OL3
â faire des "builds" combinant OL3 + application
â "type-checking"
Mais : bien utiliser le compilateur demande de l'expérience.
www.camptocamp.com / 18/24
- 22. Perspectives
â ImplĂ©mentation WebGL du vecteur
â IntĂ©gration avec Cesium + 3D en gĂ©nĂ©ral
â Outils de build en ligne
â Tutoriel : crĂ©er des appli OL3 avec Closure
â « AmĂ©lioration continue »
www.camptocamp.com / 22/24
- 24. As Soon As Possible!
www.camptocamp.com / 24/24