OL3-Google-Maps-GSoC 2017 Ideas

This page lists some ideas for the 2017 Google Summer of Code program with ol3-google-maps, i.e. OLGM.

Your ideas are welcome as well!

Mentors

 * Alexandre Dubé
 * Raphaël Gagnon

Description
The idea is about having a cleaner way to deal with Google Maps layers within the library. The way it is currently done brings a lot of limitations. Having a way to deal with those layers without any limitations would be the main goal.

Technical Description
Here's how the library works: The OpenLayers' map is put on top of the Google Maps map as a control that takes 100% of the map. The navigation tools of Google Maps are all deactivated. Those from OpenLayers are active, so zooming or panning the map comes from the navigation tools of OpenLayers. The synchronization of the animations between Google Maps and OpenLayers is not always perfect.

In an attempt to make the animation more "fluid", the layers from OpenLayers are rendered by Google Maps instead. This is a nice feature, but comes with limitations. For example, in OpenLayers you can create clustered vector features. This is not managed by the OLGM library, i.e. we would need to make the same thing using the Google Maps API.

Having a cleaner way to deal with Google Maps layers would require a big turnover in the way things are currently managed within the library. This new "way" would be the one to use from there on, but the "old" way should be kept for backward compatibility support.

Expected Outcome

 * Be able to use OpenLayers with a Google Maps layer without any limitations and with perfect synchronization of the navigation animations.
 * This may require features that are only available in recent browsers
 * It is expected that some older browsers may not be able to support this new feature.

Required skills

 * JavaScript
 * ES6 (ECMAScript 6)
 * OpenLayers
 * Google Maps JavaScript API

Difficulty Rating
The difficulty can be categorized as "normal".

Tasks
Here's a list of tasks that should be accomplished. Some are not directly linked with the idea, but would make the library more robust and more usable by users.


 * have a cleaner way to manage Google Maps layers within OLGM without having to create sibling components within Google Maps
 * ensures the perfect animation synchronization of both OpenLayers and Google Maps while zooming and panning
 * support more features within the library, such as clusters and other features mentioned under the "limitations" of the library
 * convert the code to ES6
 * remove all dependencies to the Closure Library
 * support the latest version of OpenLayers
 * various bug fixes that have been raised on GitHub by users of the library
 * various features that have been asked on GitHub by users of the library