I am designing a web page that will be accessed by 10-20 users simultaneously, with the following requirements:

  • Display Google map data as the base layer (higher quality street information in our area of interest than OSM)
  • Display ~30 pre-existing KMLs, each toggleable for display by the user. These contain markers, lines, and polygons.
  • Perform filtering based upon KML meta-data (i.e. color of a feature)
  • Allow user to specify a polygon
  • Perform filtering based upon polygons (both user specified and pre-existing, i.e. counties)
  • Export filtered results to a new KML file.

An example usage would be: User selects two of the 30 KML layers (i.e. view only bridges and dams, not hospitals), and displays these on the map. User filters these features by a single county (pre-defined polygon). User further filters the data with a user-defined polygon. User 'exports' filtered data: filtered data is added to a (versioned) KML, which aggregates all user-filtered data and (the latest version of which) is hosted for download.

I have built a prototype using OpenLayers (2.13.1), but the performance when rendering 1000+ (but generally less than 5000) features is unacceptable. I am currently exploring the use of OpenLayers 3, but it does not support a Google Maps layer, which is fairly important to this project (again, due to quality of data vs OSM in the area of interest).

I have also built a prototype using fusiontables and the GMaps API, which was able to render the data with excellent performance - however I have not been successful at filtering the data. The fusiontablelayer API provides a single ST_INTERSECTS clause as part of an SQL query, but I would need to call this once per marker, per geographic filter, equating to ~300,000 GET requests... [If there is another way to perform this filtering using the fusiontable/GMaps API that I've overlooked, please let me know!]

Finally, in a small test, I have converted KML to GeoJSON, filtered the data against another polygon defined in GeoJSON using a javascript library, and converted the results back to KML format - but with no map rendering throughout the process. Ultimately I need my users to be able to select and filter data visually on a map, not programmatically.

So far everything has been done client-side (except the various google API calls) in javascript. Other than basic web/sql servers, I do not have any experience with a GIS-specific server solution. I'm starting to think a server-based approach will be necessary to display the volume of markers and vector data I need. A client-side approach seems simpler but may not be feasible.

So, the question boils down to: Can this be done client-side (to include clientside + existing 3rd party server API)? If not, and a server-based approach could fulfill these requirements, what do you recommend?

I should mention - I'd like to keep this project free, but am willing to spend up to 200 dollars if necessary. I currently have a shared hosting web server (hostgator) and domain I can use for the project, not to mention a local web server for development. I am an experienced Java and C# programmer, and am familiar enough with javascript and SQL to be dangerous (mostly to myself).

Recommendations or not, thanks for your time reading this!

closed as unclear what you're asking by Izzy, RockPaperLizard, danijelc, Tymric, Flyk Mar 13 '15 at 17:57

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • Long text, bfishman – but please allow the question: Are you looking for a ready-to-use solution – or rather some kind of "how could that be done"? The latter is off-topic here, as is your "Can this be done client-side": SR is about recommending software for specific needs, not for giving "general advice". – Izzy Mar 11 '15 at 11:56
  • Ah, my mistake. I am looking for a set of frameworks and possibly server applications , not a single ready-made solution. Feel free to flag this for deletion, I will ask elsewhere. – bfishman Mar 12 '15 at 15:51
  • If you feel you cannot edit your question in a way we can answer it – feel free to delete it yourself. Or split it up, asking for (some of) the components separately :) – Izzy Mar 12 '15 at 16:39

Browse other questions tagged or ask your own question.