Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Static interactive map publishing #79

Open
jumpinjackie opened this issue Aug 27, 2019 · 1 comment

Comments

@jumpinjackie
Copy link
Owner

commented Aug 27, 2019

If you've ever used QGIS, there is this great plugin called "qgis2web" that allows one to take a QGIS project and produce a basic static interactive map (based on either OpenLayers or Leaflet) out of it.

With the introduction of UTFGrid support in MapGuide Open Source 4.0, a new type of static interactive map is possible:

  • Base map imagery provided by an XYZ tile set (or OpenStreetMap)
  • Tooltip interaction data provided by UTFGrid tiles overlaid on top

Such an interactive map can be completely pre-cached up front and can be used outside of the MapGuide Server environment (ie. It can be served as a static web page).

To demonstrate the possibilities of such a combination, we should have a qgis2web-style publishing feature where invoking it will do the following:

  • Optional: Ask for an image XYZ tile set definition
  • Optional: Ask for an UTFGrid XYZ tile set definition
  • Required: Choose between OpenLayers or Leaflet
  • Required: Ask for the bounding box of interest
  • Required: Output directory

Once all the options are set, publishing will do the following:

  • Request all XYZ image and UTFGrid tiles within the specified bounds (doing an ad-hoc tile seeding in the process). Download these tiles to the specified output directory.
  • Generate the HTML page for the map viewer from a pre-defined template and output the web page assets to the specified output directory.

@jumpinjackie jumpinjackie added this to the 6.0m11 milestone Aug 27, 2019

@jumpinjackie jumpinjackie self-assigned this Aug 27, 2019

jumpinjackie added a commit that referenced this issue Sep 3, 2019
jumpinjackie added a commit that referenced this issue Sep 3, 2019
jumpinjackie added a commit that referenced this issue Sep 11, 2019
#79: A few test runs of StaticMapPublisher reveals that GetTile lacks…
… operational resilience. Modify these implementations to use a polly-based exponential backoff algorithm for retrying failed GetTile requests.
jumpinjackie added a commit that referenced this issue Sep 12, 2019
#79: Add an async-all-the-way-down implementation of XYZ tile seeding…
… using HttpClient and awaiting batches of pending tile download tasks. This turns out to be a much superior way to seed tiles than the synchronous method using Parallel.For and a more stable way as well (as the Web Tier receives less load)
jumpinjackie added a commit that referenced this issue Sep 12, 2019
#79: Add OpenLayers viewer assets and use RazorEngine to generate an …
…appropriate index.html file from the publishing options specified.
jumpinjackie added a commit that referenced this issue Sep 12, 2019
jumpinjackie added a commit that referenced this issue Sep 12, 2019
#79: Add support for randomizing the tile request list. In theory, th…
…is should improve metatiling throughput due to reduced lock contention on adjacent sub-tiles of a metatile because a randomized request list means we're no longer concurrently trying to hit adjacent tiles on any given batch of parallel requests where lock contention is likely.
jumpinjackie added a commit that referenced this issue Sep 12, 2019
@jumpinjackie

This comment has been minimized.

Copy link
Owner Author

commented Sep 14, 2019

Checklist:

  • Add leaflet implementation
  • Warn that UTFGrid layers cannot be viewed locally (because OL and probably Leaflet.UTFGrid too fetches UTFGrids via XHR which doesn't work for file:/// URIs for security reasons) and maps that have UTFGrid layers must be hosted by a web server.
  • Move to a file-based means of specifying all the required publishing parameters
  • Provide basic instructions for hosting this portable web map
  • Allow specifying WFS/WMS layers for inclusion
  • Allow pulling in extra vector data overlays
    • Use the new clean json SELECTFEATURES API to pull down GeoJSON data of selected features
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.