53
53
a [href ]: hover .tag-span , a [href ]: focus .tag-span {
54
54
text-decoration : underline;
55
55
}
56
+ /* hack because respec is pulling in too much content */
57
+ .issue > : not (.issue-title ) {
58
+ display : none;
59
+ }
60
+ /* doesn't currently work (repsec drops the second class when processing the issue) */
61
+ .issue .discussion {
62
+ border-color : hsl (180 , 90% , 45% );
63
+ background : hsl (180 , 80% , 90% );
64
+ }
56
65
</ style >
57
66
< script class ='remove '>
58
67
var respecConfig = {
@@ -275,9 +284,17 @@ <h3>The Maps for HTML Community Group</h3>
275
284
< em > why</ em > native HTML web maps would be beneficial,
276
285
and < em > how</ em > they should best be defined.
277
286
</ p >
278
- < p class ="ednote ">
287
+ < div class ="ednote ">
288
+ < p >
279
289
This report is a work in progress!
280
290
Feedback and contributions are welcome.
291
+ Most sections of the report include links to a discussion issue on GitHub.
292
+ Use those issues to suggest corrections, additions,
293
+ or changes to the conclusions.
294
+ To suggest a new section (e.g., a new use case),
295
+ please start a new issue.
296
+ </ p >
297
+ < p >
281
298
To make substantive contributions
282
299
(that is, anything that is bigger than typo corrections or formatting fixes),
283
300
you will need to first
@@ -948,10 +965,7 @@ <h2>Reviewed JavaScript Tools</h2>
948
965
In addition, multiple open source JavaScript libraries
949
966
have developed to make it easier for website authors to build on other map data services.
950
967
</ p >
951
- < p class ="issue ">
952
- Need data on the frequency of use of the different JS tools.
953
- < a href ="https://trends.builtwith.com/mapping/ "> </ a > has numbers, but no methodology.
954
- </ p >
968
+ < p class ="issue " data-number ="25 "> </ p >
955
969
< p >
956
970
The reviewed implementations come in three forms:
957
971
</ p >
@@ -967,7 +981,7 @@ <h2>Reviewed JavaScript Tools</h2>
967
981
< li >
968
982
HTML custom elements,
969
983
with configuration through attributes and child elements.
970
- < p class ="issue "> Need to identify reasonably popular web maps tools based on custom elements. </ p >
984
+ < p class ="issue " data-number =" 23 " > </ p >
971
985
</ li >
972
986
</ ul >
973
987
< p >
@@ -1017,7 +1031,7 @@ <h2>Reviewed JavaScript Tools</h2>
1017
1031
we don't strictly exclude paid features from our assessment of support.
1018
1032
</ p >
1019
1033
1020
- < section >
1034
+ < section id =" google-maps " >
1021
1035
< h3 > Google Maps embeds and Google Maps Platform API</ h3 >
1022
1036
< p >
1023
1037
By far the most frequently used map widget on the web,< sup > [citation needed]</ sup >
@@ -1033,52 +1047,112 @@ <h3>Google Maps embeds and Google Maps Platform API</h3>
1033
1047
The Google Maps Platform includes a JavaScript API
1034
1048
for generating map viewers and adding custom features and data layers.
1035
1049
It also includes methods to access more complex search functions, local images, and other data.
1036
- Most features require an API key and usage is billed per page view .
1050
+ Most features require an API key and is billed by usage ( page views or API requests) .
1037
1051
</ p >
1052
+ < p class ="issue discussion " data-number ="9 "> </ p >
1038
1053
</ section >
1039
1054
1040
- < section >
1055
+ < section id =" openstreetmap " >
1041
1056
< h3 > OpenStreetMap embeds</ h3 >
1042
1057
< p >
1043
-
1058
+ < a href ="https://openstreetmap.org/ "> OpenStreetMap</ a > is a project to compile free-to-use wayfinding maps of the entire Earth,
1059
+ from crowdsourced contributions.
1060
+ </ p >
1061
+ < p >
1062
+ The interactive map on the group's website can be used to generate embeddable map widgets.
1063
+ Various options can also be specified
1064
+ < a href ="https://wiki.openstreetmap.org/wiki/Browsing#Other_URL_tricks "> in the URL</ a > for the embed source.
1044
1065
</ p >
1066
+ < p >
1067
+ The image tiles created by the project can also be accessed directly by URL recipes,
1068
+ and these are used in other map viewer widgets and APIs.
1069
+ The raw data is also re-processed and used by other map data services.
1070
+ </ p >
1071
+ < p class ="issue discussion " data-number ="26 "> </ p >
1045
1072
</ section >
1046
1073
1047
- < section >
1048
- < h3 > Bing Maps embeds</ h3 >
1074
+ < section id =" bing-maps " >
1075
+ < h3 > Bing Maps embeds and Bing Maps Control API </ h3 >
1049
1076
< p >
1050
-
1077
+ < a href ="https://www.bing.com/maps# "> Bing maps</ a > provides embeds that can be generated from their website.
1078
+ For more complex options, the < a href ="https://www.microsoft.com/en-us/maps/v8-control "> API</ a >
1079
+ can be used to generate widgets with minimal configuration,
1080
+ but also provides client-side APIs for manipulating the map,
1081
+ as well as an interface to Bing's search services.
1082
+ API tokens are required; free and paid plans are available, with usage caps.
1051
1083
</ p >
1084
+ < p class ="issue discussion " data-number ="27 "> </ p >
1052
1085
</ section >
1053
1086
1054
- < section >
1087
+ < section id =" mapkit-js " >
1055
1088
< h3 > MapKit JS (Apple Maps) API</ h3 >
1056
1089
< p >
1090
+ < a href ="https://developer.apple.com/maps/mapkitjs/ "> MapKit JS</ a > provides
1091
+ a JS framework for integrating Apple Maps in a website,
1092
+ with a client-side API for customizing interactions,
1093
+ and integrations with Apple search services.
1094
+ </ p >
1095
+ < p >
1096
+ A developer account is required,
1097
+ along with a method of generating encrypted API tokens on demand on the webserver.
1098
+ </ p >
1099
+ < p class ="issue discussion " data-number ="28 "> </ p >
1100
+ </ section >
1057
1101
1102
+ < section id ="mapbox ">
1103
+ < h3 > Mapbox GL JS API</ h3 >
1104
+ < p >
1105
+ < a href ="https://docs.mapbox.com/ "> Mapbox</ a > provides
1106
+ map data as a service, as well as frameworks for multiple platforms.
1107
+ The GL JS framework generates map viewer widgets from client-side JavaScript calls,
1108
+ using WebGL for the actual rendering.
1109
+ Alternatively, the Mapbox < a href ="https://docs.mapbox.com/api/maps/#maps "> Maps API</ a >
1110
+ returns complete HTML slippy maps based on URL configuration,
1111
+ and so can be used as an iframe source.
1112
+ </ p >
1113
+ < p >
1114
+ An API key is required, with cost based on usage.
1058
1115
</ p >
1116
+ < p class ="issue discussion " data-number ="12 "> </ p >
1059
1117
</ section >
1060
1118
1061
- < section >
1119
+ < section id =" leaflet-js " >
1062
1120
< h3 > Leaflet.js API</ h3 >
1063
1121
< p >
1064
- Leaflet is a popular JavaScript framework for building customized map views.
1122
+ < a href ="https://leafletjs.com/ "> Leaflet</ a > is a popular open-source JavaScript framework
1123
+ for building customized map views.
1065
1124
It doesn't currently have a declarative API,
1066
1125
but widgets similar to map embeds can be generated with a few calls to the library methods.
1067
1126
</ p >
1068
1127
< p >
1069
1128
Leaflet isn't associated with any particular map data source.
1070
1129
It can use image tiles from most web map (tile) services.
1071
1130
</ p >
1072
- < p >
1073
- This review is based on the < a href ="https://leafletjs.com/reference-1.4.0.html "> version 1.4.0 API docs</ a > .
1074
- </ p >
1131
+ < p class ="issue discussion " data-number ="29 "> </ p >
1075
1132
</ section >
1076
1133
1077
- < section >
1134
+ < section id =" openlayers " >
1078
1135
< h3 > OpenLayers API</ h3 >
1079
1136
< p >
1137
+ OpenLayers is one of the most established open-source libraries
1138
+ for creating dynamic web maps from map data in standard formats.
1139
+ As with Leaflet, it isn't associated with any particular map service.
1140
+ A basic slippy map can be created with a few lines of custom JavaScript.
1141
+ </ p >
1142
+ < p class ="issue discussion " data-number ="30 "> </ p >
1143
+ </ section >
1080
1144
1145
+ < section id ="d3-geo ">
1146
+ < h3 > D3 Geographies APIs</ h3 >
1147
+ < p >
1148
+ The data visualization library D3 includes the < a href ="https://github.com/d3/d3-geo "> d3-geo module</ a >
1149
+ which defines methods for manipulating vector map data
1150
+ (which the website author must provide).
1151
+ Unlike the other JS tools being reviewed here,
1152
+ D3 does not include code for a ready-made map viewer widget,
1153
+ but it is used for custom client-side mapping applications.
1081
1154
</ p >
1155
+ < p class ="issue discussion " data-number ="13 "> </ p >
1082
1156
</ section >
1083
1157
</ section >
1084
1158
@@ -1874,6 +1948,7 @@ <h4><!-- Goal that user/author is trying to achieve --></h4>
1874
1948
See < a href ="examples/#(add a new file for each use case) " target ="examples "> examples of <!-- description --> </ a >
1875
1949
as implemented by the reference JavaScript tools.
1876
1950
</ p >
1951
+ < p class ="issue discussion " data-number ="(GH issue number for discussion) "> </ p >
1877
1952
1878
1953
< h5 > Required capabilities</ h5 >
1879
1954
< ul data-ucr-role ="required-capabilities ">
@@ -1889,6 +1964,7 @@ <h4><!-- Action that is/should be possible --></h4>
1889
1964
< p >
1890
1965
<!-- Description of how it should work & why it is useful to users/authors of maps. -->
1891
1966
</ p >
1967
+ < p class ="issue discussion " data-number ="(GH issue number for discussion) "> </ p >
1892
1968
1893
1969
< h5 > Existing implementations</ h5 >
1894
1970
< p >
0 commit comments