This report outlines the use cases and requirements for standardizing modern Web maps, in a way that works for map content authors, webpage authors, and website users. The use cases and requirements were gathered in consultation with the Maps for HTML Community Group and others.

Three aspects of web maps are reviewed: map viewer widgets, client-side mapping APIs, and map data formats. For each, evidence is gathered from widely-used scripted JavaScript web map frameworks. The common features and limitations of the current techniques are the basis of the requirements for a standardized solution that could be built in to HTML and web browsers.

Comments, corrections, and suggested additions should be made as GitHub issues. If that is not possible, send an email comment to public-maps4html@w3.org.

Introduction

The current state of web maps

Web maps today are indispensable to billions of people, for exploring and understanding the world around them. Like paper maps before them, web maps are used for planning, wayfinding, analysis, and more. But the power of an interactive, hyperlinked medium supports a richer experience than could have been imagined by a cartographer from a previous century. Online maps can be dynamically redrawn with new data, or according to the user's preferences. They can connect to other maps — for adjacent areas, finer detail, or different geographical features — and can link out to complex information about the places they represent.

But despite their ubiquity on the web, maps have no native, semantic representation in HTML.

HTML has had “image maps” — hyperlinked graphics, where selecting different parts of the graphic triggers a different URL — from its early days. These were quickly adopted to represent simple cartographic maps. The <MAP> element sounds like it should be the basis of a web map, but its basic functionality (to define geometric areas on an image that represent distinct hyperlinks) has not evolved to include many capabilities that users today expect when interacting with maps on the web, such as the ability to dynamically change the map view.

Web mapping technology has undergone a long period of evolution. Today's web maps are usually sophisticated client-server applications, dynamically combining many types of spatial data on demand for web users. Implementations vary widely, but some of the underlying techniques, software, semantics and formats have become accepted patterns (for example, the tile naming systems), or formal standards (for example, the standards published by the Open Geospatial Consortium, some of which are also ISO standards).

Many sources of spatial data are available online, from governments, commercial services, and non-profit projects. But accessing and using the data is a specialized task; most web developers or website content creators rely on JavaScript frameworks (or sometimes still Flash frameworks) that can fetch the correct map image tiles or vector data, draw them to the screen, and handle the most common user interactions.

Many of these web map frameworks are tied to a specific commercial provider of map data, making it difficult for website creators to integrate their own data, or data from multiple sources. Many of the web map frameworks do not work at all without JavaScript, and require considerable resource downloads and processing. The end user has limited control or customization over the map interface — unless the website author happened to choose the web map provider that matches the native mapping application on the end-user's device.

Web maps today may not be perfect, but they have filled a clear need for website authors and users. The multiple frameworks used to generate web maps implement the same capabilities with different code — code that needs to be downloaded and processed for each website with a map in it. These core aspects of Web maps represent mature, ubiquitous user interface (UI) and application programming interface (API) patterns. It is now reasonable to consider standardizing these capabilities for implementation by web browsers directly.

A key challenge is to do so in a way that is compatible with the core values of the open web, and integrated with other web platform technologies.

The Maps for HTML Community Group

The Maps For HTML Community Group (Maps4HTML) arose as a result of face-to-face discussions at the Linking Geospatial Data workshop 2014, co-sponsored by the W3C and the Open Geospatial Consortium.

The group operates within the structure of a W3C community group, with clear license terms for contributions of intellectual property. The community group process designed to support the eventual transition of the group's work to become open web standards. The group attempts to follow the established best practices for web standard development, as outlined in the guiding principles for this report.

The initial requirements sketched out at LGD2014 were expanded into an initial use cases and requirements summary. That work was the basis of the draft [[[MapML]]] specification and [[[HTML-map-element]]] proposal. Although MapML has had notable support and development efforts from within the geospatial community, as of early 2019 it has not received significant support from web browser developers or HTML standards teams. For that reason, the current document rolls back the focus to the discussion of mapping use cases and requirements. The structure of this report is intended to more comprehensively explain why native HTML web maps would be beneficial, and how they should best be defined.

This report is a work in progress! Feedback and contributions are welcome. Most sections of the report include links to a discussion issue on GitHub. Use those issues to suggest corrections, additions, or changes to the conclusions. To suggest a new section (e.g., a new use case), please start a new issue.

To make substantive contributions (that is, anything that is bigger than typo corrections or formatting fixes), you will need to first become a member of the community group and make the corresponding IP commitments.

Structure of this report

The purpose of this report is to describe (1) why and how the open web would benefit from having web map features built in to web browsers, and (2) what this native web mapping function should look like, to website creators and to end users.

This report uses an empirical approach to identify required features of web maps, by looking for the common features of web map frameworks used today. However, we also recognize that web maps today have limitiations. A proposal for a native HTML web map, built in to web browsers, needs to be assessed on the same merits as any other proposed web standard.

In , we outline the theoretical factors we use for assessing whether a given feature should be included as a requirement. In , we introduce the web map frameworks that are used in the empirical review.

The review of potential requirements is then divided into three parts:

Within each part, we identify potential use cases: problems that a website author or user wants a web map to solve. The use cases are defined in pragmatic terms, describing a specific function or action. Real-world, domain-specific applications of the use case are summarized in an introductory description.

We then list technological capabilities: features, which a web map might include, that could help solve the use cases. Capabilities are potential requirements for a native HTML web map. To assess whether the capability should be a requirement, we examine:

Existing implementations
How common is this capability in the reviewed JS web map frameworks? Do they implement it with consistent, well-established patterns? Are there any notable limitations of the current implementations, when measured against the principles of the inclusive web?
Supported use cases
Which use cases are enabled by this capability?
Uses beyond mapping
Is there a demand for this capability on the web, beyond its use in web mapping?
Related web specifications
How is this capability related to existing web standards or proposed specifications? Can the web map implementation build on existing features?

For each capability, we conclude by summarizing its costs and potential benefits (using tags defined in the next section) for integration as a native HTML web map feature. We assign it one of three possible conclusions:

requirement
The capability is essential for a native HTML web map implementation.
enhancement
The capability would be nice to have in native HTML web maps, but isn't necessary for the initial specification.
impractical
The capability isn't currently realistic for inclusion in native HTML web maps.

If there is not yet enough evidence for a conclusion, the capability will be marked undecided.

Guiding Principles

The structure of this review is inspired by many other projects that have outlined best practices for web standards developments. This section briefly outlines the principles behind our approach, with links to further reading.

The extensible web

The report uses an evidence-based approach, defining requirements not based on hypothetical use cases but on web map tools that are already in use. We assume that the common features of existing, widely-used web map frameworks represent core functionality that web users and website authors expect from native web maps.

This approach is inspired by [[[EXTENSIBLE]]] which aims to “tighten the feedback loop between the editors of web standards and web developers,” establishing “a clear path for good ideas by web developers to become part of the infrastructure of the web” [[EXTENSIBLE]].

Much of the manifesto focuses on making it easier for developers to experiment with new features — to expose web platform capabilities at a more granular level, so that developers can remix and extend them to try out new ideas. HTML custom elements and CSS custom properties are just two of many examples of how web standards efforts since 2012 have focused on creating better building blocks for web developers.

But the implicit second step of the extensible web approach is that, once a consensus has developed from real-world experience with particular features or patterns on the web, those features can be standardized with confidence.

Web maps are extremely complex user interfaces. If that complexity is to be built-in to web browsers, the extensible web mindset requires that it be exposed to developers as individual capabilities that can be remixed and extended. For that reason, this review breaks web map functionality into very low-level capabilities. In addition to describing how each capability is used in mapping, we discuss how the same building block could be used for other web content. Focusing on these low-level capabilities also ensures that we do not overlook important details, such as the need to make individual interactions accessible to all users.

Priorities for web standards

To decide whether a capability should or shouldn't be considered a requirement for web maps, we need to assess its benefits and costs. But benefits and costs are subjective: to calculate them, we need a set of values or principles defining best practices for web standards. Only then can we assess whether integrating a feature into web browsers can bring the web closer to our ideals.

Benefits and costs are also different from different perspectives. Integrating web maps into HTML means convincing other web standard editors and web browser developers. But once a web standard is adopted, the number of website authors who use it will (hopefully) be much larger than the number of people who worked on the initial standard; the number of people who use those websites will be larger still. The [[[html-design-principles]]] rely on these numbers to establish a “priority of constituencies”:

In case of conflict, consider users over authors over implementors over specifiers over theoretical purity. … Of course, it is preferred to make things better for multiple constituencies at once. [[html-design-principles]]

This section introduces the categories by which we measure costs and benefits to each of these constituencies.

Users

An inclusive web is available to everyone, to connect and create in the ways most comfortable to them.

In this report, the user-friendliness of a potential web map feature is assessed on these points:

privacy & security

Can this feature be implemented in a privacy-respecting manner? Are there any other security concerns from this feature? Would making it a built-in feature, standardized in web browsers, improve privacy & security compared to current web practice?

Tags for the costs and benefits of potential requirements:

  • Privacy: potential improvement indicates that a built-in browser implementation of this feature, if done correctly, could improve the protection of the end user's privacy, compared to current practices on the web.
  • Privacy: potential improvement for website origin isolation indicates that a built-in browser implementation of this capability, if done correctly, could make it easier for website authors to use web maps without exposing confidential (user or corporate) data to third parties.
  • Security: potential improvement indicates that a built-in browser implementation of this capability, if done correctly, could improve the protection of the security of the browser environment, compared to current practices.
  • Privacy: involves personal data indicates that in order to fully implement this capability, the browser would have access to sensitive or personally-identifying data about the user, which would need to be protected.
  • Privacy: possible fingerprinting indicates that implementing this capability would expose to website code user settings or data from device sensors, which could make it easier for website trackers to generate a unique “fingerprint” for identifying that user across many sites.
  • Privacy: reveals sensitive data indicates that fully implementing this capability requires revealing sensitive or personally-identifying data to website code.
  • Security: user interface override indicates that this capability allows website code to alter the normal browser UI in a way that could be used by a malicious code to mislead users.
  • Security: other risks indicates that this capability includes other aspects that could make a secure implementation difficult.

Further information:

accessibility

Does including this capability in a web map standard make it easier to ensure an accessible experience (assuming an accessibility-focused browser implementation)?

Related tags:

  • Accessibility: potential improvement indicates that a built-in browser implementation of this feature, if done correctly, could improve the accessibility compared to current practices on the web.
  • Accessibility: research needed indicates that there is not a clear best practice for how to implement this capability accessibly.
  • Accessibility: needs author-provided context indicates that a good browser implementation is not enough to make this capability fully accessible; content author would always need to provide extra information (e.g., alternative text or captions).

Further information:

internationalization & localization

Can this feature be implemented in a manner that works for all languages and regions? Does building it into the browser increase the likelihood that internationalization is done correctly?

Related tags:

  • Internationalization: potential improvement (languages) indicates that a native browser implementation, if done correctly, could improve the handling of text in many languages, compared to current practices in web maps.
  • Internationalization: potential improvement (spatial data) indicates that a native browser implementation, if done correctly, could improve the ability of web maps (compared to current practices) to work in many regions with different ways of describing locations and other spatial data.
  • Internationalization: UI localization required indicates that a correct implementation of this feature would need to include translations or other localizations (e.g., different icons or layout).
  • Internationalization: regional standards indicates that the standard UI patterns or data formats vary by geographic region.
  • Internationalization: difficult to do well indicates that the capability involves other aspects that are frequent sources of internationalization and localization errors.
  • Internationalization: unstable data indicates that a correct implementation depends on information that may change over time , and would need to be updated by the browser.

Further information:

performance & cost to users

Would building in this feature significantly reduce the amount of data downloaded to the user device, or the amount of custom code that needs to run? Or would it impose heavy computation demands on the user device?

Related tags:

  • Performance: data savings indicates that making this a browser feature could reduce data demands on the user's network. Of course, nearly any built-in capability will create some data savings compared to downloading JavaScript to achieve the same effect; this tag is only used when the potential data savings are particularly notable.
  • Performance: potential optimization indicates that a native browser implementation could be much more efficient in its computation requirements, compared to JavaScript tools.
  • Performance: high cost feature indicates that this feature involves high performance costs, regardless of whether it is defined in browser code or in JavaScript.

Further information:

  • Need references regarding performance considerations for spec developers.

Authors

Website authors include developers who write code and writers, designers, and other creators of web content. When discussing web maps, website authors also include geospatial experts who create map data and want to publish it on the web.

For an author that cares about their user, it of course helps if there are native implementations of author-focused features like accessibility. But there are other ways a good web standard can make the author's job easier:

simplicity & flexibility

For an author, a good web standard should make it easy to create common web patterns, while still making it possible to create unique and customized experiences.

Related tags:

  • Author experience: simple defaults indicates that the capability would greatly simplify authoring common use cases.
  • Author experience: extensible indicates that the capability provides an important hook for extending the basic web map experience.
  • Author experience: customizable design indicates that the capability is needed to allow authors to customize the appearance of web maps to better integrate with their site design (while still using other web map capabilities).
maintainability & cost to authors

Do current implementations of the feature rely on third-party services which may change in ways that could break website content? Do they involve ongoing costs that could be mitigated by a native version of the feature?

Related tags:

  • Author maintainability: removes dependencies on third-party services indicates that current implementations cannot be fully self-hosted by the website, creating a third-party dependency that could be removed with a native HTML capability.
  • Author maintainability: cost savings indicates that current web map implementations of the feature have ongoing service costs which could be mitigated by integrating with native platform versions of the feature.
consistency & coordination with the existing web platform

Can this feature be defined in a way that integrates well with the rest of the web? Does it reuse API and markup patterns that authors already know? Can it be added to websites in a way that degrades gracefully in unsupporting web browsers?

Related tags:

  • Consistency: established patterns indicates that this capability can be modelled after an existing concept or pattern in the web platform.
  • Consistency: progressive enhancement indicates that this capability could be included in websites as an optional enhancement of existing functionality.
  • Consistency: fallbacks possible indicates that this capability could be designed to support degradation to a fallback state (with corresponding loss of function or extra costs).
  • Consistency: platform is inconsistent indicates that it will be difficult to make this feature consistent with the web platform, because existing platform features are inconsistent with each other.
  • Consistency: breaks established patterns indicates that the feature would be clearly inconsistent with other aspects of the web platform.

Further information for all authoring & API design considerations:

Implementers

Implementers, for a web standard, are the people who build and maintain web browsers and other user agent software. Because much of the work of a web browser is to work as the user's agent, features that are good for the user when it comes to security or performance are also good for implementers. But some implementer benefits aren't directly exposed to the user:

ease of implementation

An implementation that already exists is always easier. Could this feature reuse code that is already available to the browser?

Related tags:

  • Implementation: Extends web platform indicates that this capability is an incremental extension of existing web platform features, and could be designed to reuse a lot of existing code.
  • Implementation: Exposes native platform indicates that, while this capability is not currently available in the web platform, it exists in native application frameworks supported by the major operating systems. A web browser could expose the native feature instead of re-implementing it from scratch.

Reviewed JavaScript Tools

Numerous options currently exist for a website author who wants to include a map viewer in a web page, with a minimum of custom code. The examples reviewed in this section are used to identify the common features (and limitations) of web map viewers.

Many major commercial providers of web map data tiles provide ready-to-use map viewer widgets for websites to use. In addition, multiple open source JavaScript libraries have developed to make it easier for website authors to build on other map data services.

Need data to back up the reference implementations.

The reviewed implementations come in three forms:

With these different structures, comparisons are not always exact. Similar functionality may be generated from very different APIs. We assess first whether a given capability is present in each implementation, and second whether there are common patterns in how that capability is exposed.

For each capability (potential web map feature) that we review, we assign one of the following implementation levels to each of the reference tools:

full support
The capability is implemented in a correct and comprehensive manner.
supported, with limitations
The feature is implemented, but there are notable limitations when assessing the implementation against our priorities.
partial support
Some parts of the feature are implemented.
no support
The capability could theoretically exist in the tool, but isn't included.
not applicable
The capability doesn't make sense for this tool, because of other aspects of its design.

Compiling and serving map data is a complex, expensive enterprise. Many of the map data and search services require registered developer accounts, with usage-based pricing. This review focuses on features that are free-to-use for website creators, at least for low-traffic websites, or that use data which is available from many interchangeable sources. However, because of the complexities of pricing models used by some services, we don't strictly exclude paid features from our assessment of support.

Google Maps embeds and Google Maps Platform API

By far the most frequently used map widget on the web,[citation needed] Google Maps established many of the de facto standards in how a web map works.

Customized iframe embed URLs can be generated from the maps website (search/customize the view and then select "share"), or by constructing the URL query string yourself (a developer API key and account is required).

The Google Maps Platform includes a JavaScript API for generating map viewers and adding custom features and data layers. It also includes methods to access more complex search functions, local images, and other data. Most features require an API key and is billed by usage (page views or API requests).

Discuss this section on GitHub.

OpenStreetMap embeds

OpenStreetMap is a project to compile free-to-use wayfinding maps of the entire Earth, from crowdsourced contributions.

The interactive map on the group's website can be used to generate embeddable map widgets. Various options can also be specified in the URL for the embed source.

The image tiles created by the project can also be accessed directly by URL recipes, and these are used in other map viewer widgets and APIs. The raw data is also re-processed and used by other map data services.

Discuss this section on GitHub.

Bing Maps embeds and Bing Maps Control API

Bing maps provides embeds that can be generated from their website. For more complex options, the API can be used to generate widgets with minimal configuration, but also provides client-side APIs for manipulating the map, as well as an interface to Bing's search services. API tokens are required; free and paid plans are available, with usage caps.

Discuss this section on GitHub.

MapKit JS (Apple Maps) API

MapKit JS provides a JS framework for integrating Apple Maps in a website, with a client-side API for customizing interactions, and integrations with Apple search services.

A developer account is required, along with a method of generating encrypted API tokens on demand on the webserver.

Discuss this section on GitHub.

Mapbox GL JS API

Mapbox provides map data as a service, as well as frameworks for multiple platforms. The GL JS framework generates map viewer widgets from client-side JavaScript calls, using WebGL for the actual rendering. Alternatively, the Mapbox Maps API returns complete HTML slippy maps based on URL configuration, and so can be used as an iframe source.

An API key is required, with cost based on usage.

Discuss this section on GitHub.

Leaflet.js API

Leaflet is a popular open-source JavaScript framework for building customized map views. It doesn't currently have a declarative API, but widgets similar to map embeds can be generated with a few calls to the library methods.

Leaflet isn't associated with any particular map data source. It can use image tiles from most web map (tile) services.

Discuss this section on GitHub.

OpenLayers API

OpenLayers is one of the most established open-source libraries for creating dynamic web maps from map data in standard formats. As with Leaflet, it isn't associated with any particular map service. A basic slippy map can be created with a few lines of custom JavaScript.

Discuss this section on GitHub.

D3 Geographies APIs

The data visualization library D3 includes the d3-geo module which defines methods for manipulating vector map data (which the website author must provide). Unlike the other JS tools being reviewed here, D3 does not include code for a ready-made map viewer widget, but it is used for custom client-side mapping applications.

Discuss this section on GitHub.

Map Viewer Widgets

The map viewer widget is the interactive component that displays a map to end users. The map might be the primary purpose of a website, or a small embedded element in a larger HTML page.

For this section of the review, we focus only on aspects of the map viewer that are generated by the map widget framework based on initial configuration and data by the website developers. In other words, these are the features that could be represented by elements and attributes in a native HTML solution. The next section, on client-side APIs, covers custom JavaScript manipulation and event handling for the map view.

We also skip over the technical details of how the map data is encoded, and assume the browser can convert the map data into images on screen. The potential requirements in this section describe ways in which map viewers enhance the normal experience of viewing a static image (e.g., img element) in a web page. explores data structures and file formats.

See examples of default map viewers as implemented by the reference JavaScript tools. Other example pages are linked from individual use cases.

Authoring use cases

For declarative widgets, website authors are presenting information. The authoring use cases cover the types of map data they may wish to display. End users may wish to use that information in ways that go beyond what the website author intended; those use cases are grouped separately.

Display a specific location on an interactive map

For a website creator, this is the simplest web map use case: display a map from a description of a location.

This type of web map is used by websites for stores, restaurants, and countless other organizations with physical locations. It is also used by newsmedia to display the location described in an article. In social media and blogs, a single-location map can be used to show where a post was uploaded from, or where a photograph or video was taken.

See examples of single-location map viewers as implemented by the reference JavaScript tools.

Discuss this section on GitHub.

Required capabilities
  • or
  • or

Display a region of map data as a static image

Although this review mainly focuses on interactive map viewers, authors sometimes want a map displayed as a static image, without pan/zoom capabilities. This is common in cases where the accompanying text refers to specific features in the map, or when a series of maps will be contrasted.

Discuss this section on GitHub.

Required capabilities

Display multiple point locations on a single map

Discuss this section on GitHub.

Required capabilities
  • Everything listed in

Display routes/paths or regions

Discuss this section on GitHub.

Display custom web content describing map features

Discuss this section on GitHub.

Display map coverages or other custom tile data

Unlike map features, which can be defined in geometric terms, map coverages define continuous variations, and are usually represented as image data. Many maps of natural features involve coverage data, such as maps showing vegetation cover, rainfall, or elevation.

Map images are also used for aerial and satellite photographs, and for pre-rendered map tiles generated on the server or in advance. Custom map tiles — in contrast to map tiles from the major web map services — are necessary if displaying confidential business data, maps of proposed developments or historical geography, or any other type of map not included in the major way-finding street maps.

Discuss this section on GitHub.

Required capabilities
  • For more complex maps, and

Combine multiple layers of map tile data or features

Discuss this section on GitHub.

Display drawings or schematics without geographic coordinates

Many of the capabilities of a map viewer widget — panning and zooming, possibly with synchronized layers or dynamically loaded content for different positions or zoom layers — are useful for non-map content, or for maps that don't have geographic coordinates. Examples include technical schematics, blueprints, data charts, “mind maps” and other flow charts, or maps of fictional places. An author who is familiar with map widgets would want to reuse the same technology for displaying these types of map-like content.

Discuss this section on GitHub.

Required capabilities

End-user use cases

Reposition or scale a map to find more context for the displayed locations

Users often want more information than is initially visible in a map viewer. The user may zoom out or pan, to help place the displayed location in a larger context. Or they may zoom in, to see details more clearly.

This use case exists regardless of how the user interacts with their device. For it to be fully supported, the map viewer must be explorable with all of the following input methods:

  • mouse/trackpad pointer (with or without a scroll wheel)
  • touchscreen gestures
  • standard/intuitive keyboard shortcuts
  • accessibility API events (e.g., as triggered by a screen reader or voice control software)

Discuss this section on GitHub.

Access additional information about a point on the map

A map view can't show everything all at once. Users often want to find more information about the representations on the map. This information could be presented as details displayed on demand in a pop-up box or sidebar.

The details that are available might include the coordinates of the point, labels for any features at that point, metadata or links to further information about the features, or local data values for continuous coverage data layers.

Some of this information might require querying the server with the selected coordinates. But to the extent that the information is already available in the map viewer, it should be accessible by users without the author adding extra features.

Discuss this section on GitHub.

Show/hide layers of map tile data or features

Discuss this section on GitHub.

Bookmark a location

Discuss this section on GitHub.

Search or sort within a set of geographic features

Discuss this section on GitHub.

Customize the color scheme (light/dark or high contrast)

Discuss this section on GitHub.

Map Viewer Capabilities

Generate a default map for a given area

Often, the website author does not want to specify the map data source or other details about the map; they just want a generic wayfinding map of the area.

Existing implementations

The embeds and commerical APIs all provide default street maps without the author needing to specify the map source. In contast, the more flexible APIs must be combined with an separate map provider (e.g., OpenStreetMap).

google-maps-embed
google-maps-api
openstreetmap-embed
full support: this is the basic function for these widgets: give it a location, it will draw the map.
leaflet-api
open-layers-api
no support: must be combined with a separate map provider.
Supported use cases
    Uses beyond mapping

    No non-map uses for generating a default street map. But, there may be interest in displaying default maps as static images in addition to using them within map widgets.

    Related web specifications

    Conclusion

    This functionality is a highly valuable enhancement for native web maps, especially if it could be built on native platform features that allow the users to download maps in advance for later use. However, if user agents cannot integrate with a native operating system feature, they would need to rely on a third-party service for the map data.

    Display a map using tile data from an author-specified web map service

    Existing implementations

    google-maps-api
    full support
    google-maps-embed
    no support
    Supported use cases
      Uses beyond mapping

      Related web specifications

      Conclusion

      Display map tiles defined in various common coordinate systems

      Most tiled image maps on the web use the Web Mercator system of dividing map data into image tiles. As the name suggests, this is based on the Mercator map projection, with the addition of standard for dividing the map into tiles at different zoom levels.

      Web Mercator is not appropriate for maps of polar regions, where the Mercator projection distorts geography. Other tileset coordinate systems have been defined specifically for polar maps. In addition, many regions have well-established local map grid coordinate systems, and being able to use the local grid means access to established map data sources.

      The technological complexity of supporting different projections depends on how many other capabilities are supported. Tiling images doesn't require knowing how those images map to geographic coordinates. But the tile boundaries and coordinate projection are needed in order to draw marker points or vector features over the map. And information about the tileset zoom levels is required in order to dynamically load content on pan and zoom.

      Combining map layers with different projections, or otherwise converting one map projection to another view, is a separate capability, discussed in .

      Discuss this section on GitHub.

      Existing implementations

      google-maps-api
      supported, with limitations: you are able to create custom projections that are rectilinear by passing in a bi-directional mapping between coordinate systems
      google-maps-embed
      no support
      Supported use cases
        Uses beyond mapping

        Related web specifications

        Conclusion

        Based on the limited data, we are undecided about whether this should be a requirement.

        Show pinpoint locations or custom markers on the map

        Discuss this section on GitHub.

        Existing implementations

        google-maps-embed
        google-maps-api
        full support:
        Supported use cases
          Uses beyond mapping

          Related web specifications

          Conclusion

          Based on the limited data, we are undecided about whether this should be a requirement.

          Draw polygons or polylines as stylable, interactive vector graphics (separate from the image tiles)

          Polylines are used in maps to draw roads, rivers, directions between places, or the observed path of a moving object. Polygons are used for political regions (country and municipal boundaries), building footprint outlines, and for contour lines which mark the extent of a certain value within continuous data (e.g., elevation). Polygons are also used for roads, rivers and so on at higher zoom levels, where the true shape of the feature can no longer be approximated as a single line. They are two of the most common types of map data features.

          It is common on the web for vector map data to be pre-rendered into raster image layers on the server. However, if the vector feature is important for the web view, drawing it as separate graphic object means it can be dynamically styled, associated with labels or descriptions, and the target of user events.

          Discuss this section on GitHub.

          Existing implementations

          google-maps-api
          full support:
          google-maps-embed
          no support:
          Supported use cases
            Uses beyond mapping

            Related web specifications

            Conclusion

            Based on the limited data, we are undecided about whether this should be a requirement.

            Display a basic map without JavaScript

            Users may disable JavaScript for security reasons, or as part of a strategy to reduce data consumption. In addition, JavaScript can fail because of network errors or because of a parsing or runtime error in the code.

            It is reasonable that web maps have reduced functionality without JavaScript. But ideally, a basic map with text annotations and links should still work without it.

            A natively-supported, declarative web map viewer would by definition have this capability.

            Discuss this section on GitHub.

            Existing implementations

            Our reference implementations are primarily JavaScript tools. Many do not — by default — provide any features when JS is disabled or fails, although a website author could build in fallbacks by including links, images, or iframes in the markup that are replaced when the script runs.

            For built-in graceful degradation, the best implementations currently are the iframe embeds.

            google-maps-api
            supported, with limitations: The Maps Static API can be used to serve a static image without JavaScript. However, this is not the default fallback behavior for the other map APIs when JavaScript is turned off, and it must be implemented as a custom feature.
            google-maps-embed
            no support:
            Supported use cases
              Uses beyond mapping

              To the extent that any capabilites of a map viewer are shared with other content, having that capability work without JavaScript is a shared benefit.

              Related web specifications

              Conclusion

              Based on the limited data, we are undecided about whether this should be a requirement.

              Zoom the map independently from the rest of the page

              In addition to panning the view, it is standard to allow the user to adjust the map scale: zooming in to increase magnifaction (show finer detail), zooming out to decrease magnification (show a wider area).

              Existing implementations

              The following UI is standard across the reviewed map widgets:

              • Accessible buttons labelled with plus (+) and minus (-) signs zoom by steps.
              • Mouse wheel movements (usually used to scroll the page) are captured and converted into continuous zoom adjustments (mouse scroll down becomes zoom in, mouse scroll up becomes zoom out).
              • Touch gestures for pinch zoom are used to zoom the map instead of the page.
              google-maps-embed
              google-maps-api
              openstreetmap-embed
              full support: (as described above)
              Supported use cases
                Uses beyond mapping

                Localized zooming is used on the web for charts and diagrams, photographs (e.g., to examine details in a product photo, or for photo editing apps), embedded documents (e.g., a PDF viewer), and sometimes data tables.

                Related web specifications

                Zooms are often implemented using transforms, which defines the scale as a multiplicative factor compared to the normal size (scale(2) for doubling the size, zooming in; scale(0.5) to zoom out by the same amount). Scale transforms are paired with translations to create zoom and pan effects. [[css-transforms-1]]

                An alternative approach for describing zoom and pan is used in SVG viewBox attribute and in spatial media fragments. In this system, the container element defines its own width and height (e.g., with CSS) plus a target rectangle in the zoomable graphic's coordinate system (x and y offset, plus width and height); the user agent then zooms and pans the graphic to display the target rectangle in the available space. [[SVG2]][[media-frags]]

                Conclusion

                This functionality is a requirement for modern web maps, with other uses in the web platform. A zoom specification will need to carefully consider all uses so it can be implemented consistently, and should be coordinated with panning.

                • To Do

                Pan the map display

                A key part of the interactivity of a web map widget is that the user can change the region displayed. To pan the map is to shifting the view horizontally or vertically, so a different location is centered in the map display.

                For mapping, panning is tightly linked with zooming and with dynamic loading of new content. For this discussion, we've divided them into separate features so that the costs, benefits, and non-mapping use cases can be assessed separately.

                Existing implementations

                The following UI is standard among the reviewed map viewers:

                • Drag the map view by clicking and holding a mouse.
                • Swipe the map view with touch gestures.

                The following UI is available in some viewers, but not all:

                • Pan the map view with arrow keys.

                None (?) of the map viewers show a visible indication of keyboard focus for panning, or any other affordances to indicate how keyboard panning should work.

                openstreetmap-embed
                supported, with limitations: Mouse, touch (?), and keyboard panning; no keyboard focus indication
                google-maps-embed
                google-maps-api
                partial support: Mouse and touch panning only. Keyboard panning is possible on the google maps web application. Keyboard panning is activated when a specific region of the map is focused.
                Supported use cases
                  Uses beyond mapping

                  The standard panning interactions are also common on the web for other JS-enhanced zoom and pan graphics (e.g., a close up of a product photograph, a data chart). Similar interactions may be used in some games, or in navigation of large spreadsheets. Creating a native way to trigger panning within a web layout could help ensure consistent, accessible user experiences for panning.

                  Related web specifications

                  From a rendering perspective, panning a map is very similar to scrolling a section of a CSS layout. Important differences:

                  • Although 2D scrolling is supported, the interaction usually emphasizes a primary reading axis. Panning is usually 2D, and may be conceptually diagonal as often as horizontal or vertical.
                  • The initial scroller view is usually at the start of the content (and “start” has meaning); an initially panning view is often in the middle, with panning in all directions possible.
                  • Scrollable content is often visually indicated by scrollbars (although it is now common to hide scrollbars until use).
                  • The user interactions are different for some input methods: mouse panning uses click and drag instead of mouse wheel for (primary-direction) scroll, keyboard panning only uses the arrows, not the space bar and page up/down keys (which trigger scroll in the primary axis).

                  Panning interactions also overlap with the proposed CSS spatial navigation spec.

                  In web maps and many other applications, panning effects are combined with zoom effects; for that reason, panning is often implemented using CSS transforms or SVG viewBox, which can also handle zoom. [[css-transforms-1]][[SVG2]]

                  Conclusion

                  Panning the map is universally supported in JS web maps, and is therefore a requirement for native web maps. The relevant specification should be coordinated with CSS, considering other use cases for panning on the web. Thought is needed on how to make panning accessible to all users.

                  Load additional map tiles when they pan into view

                  Existing implementations
                  google-maps-embed
                  google-maps-api
                  full support:

                  Wrap/duplicate data tiles when panning around the globe

                  Existing implementations
                  google-maps-embed
                  google-maps-api
                  full support:

                  Maintain reasonable scale of labels and lines when zooming

                  Zooming a map widget is different from magnifying a regular image, or adjusting the overall browser zoom level; the layout is magnified, but annotations such as text size and stroke width do not.

                  Dynamically load different resolution map tile on zoom

                  Existing implementations
                  google-maps-embed
                  google-maps-api
                  full support:

                  Hide or show (and maybe dynamically load) vector features and labels on zoom

                  Existing implementations
                  google-maps-embed
                  google-maps-api
                  full support:

                  Display map data attribution and links

                  Map data is subject to copyright, and use of the maps on the web usually requires at least attribution, and maybe links to terms of use. Many map services also include links for end users to report errors.

                  Standard practice in the reviewed web map tools is to display this attribution in the lower right of the map widget. For map viewers that provide their own map data, the links and copyright is automatically generated. For map frameworks that allow the developer to specify the map data source, these "attribution control" values can be set in configuration.

                  Existing implementations
                  google-maps-embed
                  full support:

                  Apply custom styling to map markers and vector features

                  Discuss this section on GitHub.

                  Existing implementations

                  google-maps-api
                  full support:
                  google-maps-embed
                  no support:
                  Supported use cases
                    Uses beyond mapping

                    Related web specifications

                    Conclusion

                    Based on the limited data, we are undecided about whether this should be a requirement.

                    Apply custom styling to map controls

                    This capability — custom styling — is separate from the ability of the author to create complete custom controls which then control the map viewer using a client-side API.

                    Discuss this section on GitHub.

                    Existing implementations

                    google-maps-embed
                    no support:
                    Supported use cases
                      Uses beyond mapping

                      Related web specifications

                      Conclusion

                      Based on the limited data, we are undecided about whether this should be a requirement.

                      Toggle whether default controls are displayed

                      Custom styling isn't always enough; sometimes an author wants to completely replace the default control buttons. Replacing the full functionality of the controls requires a client-side API, discussed separately. This capability focuses solely on the ability to declaratively control whether or not the web browser includes on-screen controls by default.

                      Discuss this section on GitHub.

                      Existing implementations

                      google-maps-api
                      full support:
                      google-maps-embed
                      no support:
                      Supported use cases
                        Uses beyond mapping

                        Related web specifications

                        Conclusion

                        Based on the limited data, we are undecided about whether this should be a requirement.

                        Select map view from latitude and longitude point

                        Latitude and longitude defines a point on the Earth's surface, without requiring any further information. For website content, latitude and longitude data might come from photo or video metadata (from GPS-enabled cameras), or it might be calculated by the author using map search services. In a dynamic web app, latitude and longitude might be generated from geolocation on the user's device.

                        Existing implementations

                        All the reference tools allow the website author to display a specific location, defined by latitude and longitude, from a map tile set.

                        google-maps-embed
                        google-maps-api
                        openstreetmap-embed
                        leaflet-api
                        full support: setting a location by latitude and longitude is straightforward.
                        open-layers-api
                        supported, with limitations: A location defined with longitude and latitude must be converted to the map tile coordinate system, but the API provides the conversion function.
                        Supported use cases
                          Uses beyond mapping

                          Related web specifications

                          The Geolocation API and Geolocation Sensor API expose the user's location using latitude and longitude data. It should be possible to set the view on a web map using data returned from these APIs. Both of these APIs use the [[[WGS84]]] as the technical definition of longitude and latitude (consistent with most modern geospatial standards), and a web map standard should use the same definition. [[geolocation-API]][[geolocation-sensor]][[WGS84]]

                          Conclusion

                          This functionality is a requirement for modern web maps.

                          Select map view from street address or place name

                          For many mapping use cases, a website author won't have exact latitude and longitude values pre-calculated. They'll have street addresses or place names in a human-readable, localized format. To convert these addresses or names into a point on a web map, the web mapping service needs access to a Gazeteer search and corresponding databases.

                          Existing implementations

                          google-maps-embed
                          google-maps-api
                          full support:

                          Reproject map tile data into a new projection or globe view

                          Map image tiles are usually defined in Web Mercator or other grid-based tile systems. For large scale maps (of the globe or continents), these reveal distortions created by the underlying projections. Many different map projections exist to more fairly display the relative size and shapes of continents on a flat map. In addition, within an interactive web environment, it is possible to use projections which more directly represent the 3D globe without trying to display it all at once, letting user interaction rotate it to show parts of interest.

                          Discuss this section on GitHub.

                          Existing implementations

                          google-maps-embed
                          no support:
                          Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Save the location or export to other application

                            For the user, it is often useful to bookmark or save a location from a map, separate from the website which included it. The user may want to export the location to a GPS or native mapping application so they can calculate directions to it.

                            Existing implementations

                            google-maps-embed
                            supported, with limitations: You are able to generate a link to the map that can be shared via a variety of methods, but there is no way way to easily this information to another application.

                            Client-side Mapping APIs

                            Client-side Mapping APIs (application programming interfaces) allow website developers to create customized map viewers, or other geographic applications. Existing APIs are JavaScript libraries that offer ready-to-use functions for fetching or rendering parts of a map, or for manipulating a map-viewer widget. A built-in web map solution would need to expose similar DOM APIs to JavaScript code.

                            Authoring use cases

                            Create, initialise, and display a map

                            An embedded map cannot usually be enhanced beyond the options available via URL configuration, and it is not may not be possible to extract additional information from the map or to subscribe to map events. For all use cases requiring the use of a client API, the first thing the web developer needs to do is to initialise and display a map.

                            See examples of creating, initialising, and displaying a map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Display multiple point locations on a single map

                            A web developer needs the ability to display a map with markers or other affordances denoting multiple specified locations. Example uses of such a map include search results (e.g. restaurants), traffic information (e.g. locations of roadworks), or the locations where photographs in a gallery were taken.

                            See examples of displaying multiple point locations on a single map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Add a custom control to a map

                            Description to follow.

                            See examples of adding a custom control to a map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Provide feedback to a user as they manipulate the map

                            Brief examples to be expanded: highlighting items in a list that are within the current bounds of the map; displaying the position of the map centre; indicating that a selected point of interest is outside the current map view in a particular direction.

                            See examples of providing feedback to a user as they manipulate the map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Allow the user to select a different style for a map

                            Description to follow.

                            See examples of allowing the user to select a different style for a map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Allow the user to control the layer displayed by a map

                            Example to be expanded later: NLS old Ordnance Survey maps.

                            See examples of allowing the user to control the layer displayed by a map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Allow a user to reset the map to their starting point

                            Description to follow.

                            See examples of allowing a user to reset the map to their starting point as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Change the bearing of a map

                            Examples to be expanded: responding to the orientation of a device; traversing a route.

                            See examples of changing the bearing of a map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Specify a data source for a map

                            Examples to be expanded: showing a map of Mars or the Moon.

                            See examples of specifying a data source for a map as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            See examples of as implemented by the reference JavaScript tools.

                            Discuss this section on GitHub.

                            Required capabilities

                            Client-side API Capabilities

                            Create, initialise, and display a map

                            This is the starting point for all usage of client APIs. Without this, there is nothing.

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            This functionality is a requirement for modern web maps.

                            Add a marker or multiple markers to a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            full support:
                            open-layers-api
                            supported, with limitations:
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            This functionality is a requirement for modern web maps.

                            Implement a custom control

                            The API should support the implementation of custom controls capable of being added to a map.

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Add a control to a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Remove a control from a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Get the bounds of a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Add a layer to a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            supported, with limitations:
                            apple-mapkit-js-api
                            not applicable:
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Remove a layer from a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            supported, with limitations:
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Display a layer on a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            supported, with limitations:
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Hide a layer on a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            supported, with limitations:
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            full support:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Specify the style of a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Determine the current style of a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Pan a map or re-centre a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Zoom a map in or out

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Subscribe to map move events

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Subscribe to map zoom events

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Subscribe to marker selection events

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Change the bearing of a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Reset the bearing of a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Define a data source for a map

                            Description to follow

                            Discuss this section on GitHub.

                            Existing implementations

                            google-maps-api
                            bing-maps-api
                            apple-mapkit-js-api
                            mapbox-gl-api
                            leaflet-api
                            open-layers-api
                            d3-geographies-api
                            not applicable:
                            Supported use cases
                            Uses beyond mapping

                            Related web specifications

                            Conclusion

                            Based on the limited data, we are undecided about whether this should be a requirement.

                            Map Data Formats for Map Viewers

                            Many different types of spatial data can be integrated in a web map: satellite imagery, cartographic representations of roads and terrain, 3D building profiles, pinpoint locations with annotated descriptions, route directions or other polyline paths, and more. Many standard and proprietary formats exist to describe this data.

                            A built-in web map viewer will need to work with spatial data that is already available from web servers, or that can be provided with minor server upgrades.

                            Use cases

                            To Do

                            Map Format Capabilities

                            Summary of Requirements

                            To Do: finish the script to generate a summary table from the annotated markup.

                            Open Issues

                            We are tracking issues on Github.

                            Acknowledgments