maps4html / mapmlserver Goto Github PK
View Code? Open in Web Editor NEWServlet for service-based MapML documents
License: Other
Servlet for service-based MapML documents
License: Other
A WMS often has multiple layers of similar type, which are appropriate for display within different scale ranges (e.g. single- vs double-line streets), and the developer-user of the WMS has to become educated as to what layers to request depending on the scale of the map.
Given that a MapML request has a defined scale, it should be possible to know what layers a given WMS request should include. To do that, the MapMLServer admin (the 'developer-user' from the WMS client scenario above) would configure a set of URL templates, each member of which would apply to a zoom range of one or more zoom levels. The element would then receive a map image that is appropriate to the scale.
Note that scale-appropriate layering can be done on the server, and so would be unnecessary on the MapMLServer, but such a feature would be nice to have. It could even be used to 'federate' services into a single MapML service under some circumstances, for example a mix of tiled or image service request could be returned, depending on the zoom of the MapML request.
Use rel values east/west/southeast etc to provide links within a zoom level to an 'adjacent' services such that panning the map will access the linked service, with possibly some visual cue to the user that they have moved off the original service.
This feature will allow services to federate seamlessly.
This will allow a WMS image request to be served as MapML <image> reference:
<feature>
<bbox>xmin ymin xmax ymax</bbox>
<image src="http://example.com/?SERVICE=WMS&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=TRUE&STYLES=&VERSION=1.3.0&LAYERS=WMS-Toporama&WIDTH=742&HEIGHT=544&CRS=EPSG:3978&BBOX=-3030447.97893178,-368069.37543363636,2859188.8003417794,3949939.260583636" type="image/png"></image>
<feature>
See schema for details
Do this when the format is more complete.
If you have a WMS that doesn't contain things like text that would look bad chopped up by tiles, you could configure the servlet to generate WMS URLs to each of the tiles inside/covering the requested MapML extent. This would allow you to use the WMS as though it was a tile cache, which would have the benefit of those responses being cache-able (in principle) on the client.
For example, if a service is available in more than one projection, could put links in the head element similar to what is done in html:
The client could choose from a number of alternates if the language or projection of the present document service does not suit.
e.g.:
See Proj4Leaflet project for how to accomplish.
Implement a MapML proxy for existing ArcGIS MapServer interface services, and add the implementation of that proxy to https://github.com/Maps4HTML/MapMLServer/blob/master/src/main/java/org/mapml/MapMLPrinter.java#L206 as an alternate form of supported URL template i.e. ArcGISMapServerTemplate, useful for ArcGIS MapServer services, as opposed to tileUrlTemplates or wmsUrlTemplates as currently defined.
For example http://geoappext.nrcan.gc.ca/arcgis/rest/services/MMS/IMA_E/MapServer/export?bbox=-3256599.7214222914,1179536.074671093,3594226.7345222933,3743106.5513747153 is a MapServer service, there could be a URL template which supports creating an image element for MapML requests to such a service.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.