Mapbox-gl-js不再受3条款BSD许可

2020-12-09 19:39:09

Permalink GitHub是超过5000万开发人员的家园,他们共同致力于托管和审查代码,管理项目以及共同构建软件。

注册

数以百万计的开发人员和公司在GitHub(全球最大,最先进的开发平台)上构建,发行和维护其软件。

mapbox-gl-js不再受3条款BSD许可。升级到此版本,即表示您同意Mapbox服务条款。有关新的许可条款和详细信息,请参阅LICENSE.txt。如有疑问,请通过https://support.mapbox.com与我们的团队联系。

从v2.0.0开始,每当初始化Map对象时,就会发生可计费的地图加载。在将现有实现从v1.x.x更新到v2.x.x之前,请查看定价文档以估算预期成本。

支持最大85°的解锁螺距。默认的maxPitch从60°增加到85°,这可能导致在水平线上方查看。默认情况下,此区域将绘制为透明,但是可以将新的天空层添加到地图上以填充此空间。实例化地图时,只需在地图选项中添加maxPitch:60即可实现传统行为。

添加3D地形功能。现在,可以使用新的terrain根级别样式指定属性或使用map.setTerrain()函数来挤压所有图层类型和标记。 (#1489)

在地平线上方添加一个新的天空层作为无限背景。 可以从样式规范中使用该层,并具有两种类型:大气层和渐变层。 添加一个自由格式的相机API,从而可以使用map.getFreeCameraOptions()和map.setFreeCameraOptions()进行3D更加复杂的相机操作。 通过采用两阶段的切片加载策略来提高性能,首先优先处理非符号层。 通过在初始地图加载时禁用符号和栅格图块的淡入动画来提高性能。 添加标签冲突框的运行时评估,以在小数缩放级别和倾斜视图下更准确地放置符号。 通过立即将焦点放在内容上来提高打开弹出窗口时的可访问性。 #9774(h / t @watofundefined) 修复了一个错误,即如果queryRenderedFeatures是由数据驱动的,则它们不会正确地显示绘画值。 #10074(h / t @osvodef)

修复了哈希控制与外部历史记录操作冲突的错误(例如在单页应用中)。 #9960(h / t @raegen) 修复一个错误,该错误导致fitBounds具有非零方位和不均匀填充的意外结果。 #9821(h / t @ allison-strandberg) 我们打算在今年晚些时候的GL JS的将来版本中删除对Internet Explorer 11的支持。 添加用于动态更改矢量图块源的方法(例如setTiles,setUrl)。 #8048(h / t @stepankuzmin) 为GeoJSON源添加过滤器选项,以便在处理之前(例如,在群集之前)过滤掉要素。 #9864 修复了方位捕捉会干扰easyTo和flyTo动画并冻结地图的错误。 #9884(h / t @andycalder) 修复了通过addImage添加后备图像时未使用后备图像的问题。 #9911(h / t @ francois2metz)

修复了对于具有定义的特征ID的填充拉伸,promoteId选项失败的错误。 #9863 修复了导致map.loaded()在点击事件后错误返回false的错误。 (#9825) 为集群化GeoJSON源添加了clusterMinPoints选项,该选项定义了形成集群的最小点数。(#9748) 修复了如果鼠标悬停在浏览器窗口或iframe之外时地图卡在DragRotate交互中的错误。(#9512) 修复了地图不移动时map.isMoving()返回true的错误(#9647,已由#9679修复) 添加mapboxgl.prewarm()和mapboxgl.clearPrewarmedResources()方法,以允许开发人员优化其地图的加载时间(#9391) 将index-of和slice表达式添加到搜索数组和字符串以查找指定值的首次出现,并返回原始数组或字符串的一部分(#9450)(h / t lbutler)

如果无法加载插件URL,请正确设置RTL文本插件状态。这使开发人员可以在加载插件时针对网络错误添加重试逻辑(#9489)

此版本大大重构并改善了台式机和移动设备上的手势处理。添加了三个新的触摸手势:两指轻扫以调整音高,两指双击以缩小,然后单击然后拖动以用一根手指调整缩放(#9365)。此外,此版本还带来了以下更改和错误修复:

现在可以同时与同一页面上的多个地图进行交互(#9365)

通过在摄像机更改事件中禁用交互处理程序,将无法再防止摄像机更改。通过侦听mousedown或touchstart地图事件并调用.preventDefault()(#9365)

由doubleClickZoom处理程序触发的相机更改事件上未记录的属性已被删除(#9365)

线标签现在具有改进的碰撞检测功能,具有更高的放置精度,减少了内存占用,在倾斜的摄影机方向下可以更好地放置(#9219)

避免在创建popup元素之前调用某些弹出方法时引发错误(#9433)

修复了map.queryRenderedFeatures(...)(#9454)不返回具有共线点的填充-挤出特征的错误 修复了在大型输入上使用功能状态可能导致堆栈溢出错误的错误(#9463) 修复了一个内部表达式将返回平铺边界上的点的不一致值的错误(#9411,#9428) 修复了一个错误,其中内部表达式将错误地评估穿越反时子坐标的几何(#9440) 将minimist升级到^ 1.2.5,以获取针对上游CVE-2020-7598安全问题的修复程序(#9425,由#9425修复)(h / t watson) 修复了Map#fitBounds(..)中的错误#9477,其中传递给选项的填充将被应用两次。 修复了一个错误#9468,该错误在使用setPaintProperty更新符号层绘画属性时会引发异常。

此版本还修复了一些长期存在的错误以及使用线型图案的意外渲染行为。这些修复程序在视觉上改变了线型比例缩放样式的方式。以前,会剪裁大于线条的图案,有时会扭曲图案,尤其是在移动设备和视网膜设备上。现在,将缩放模式以适合所有情况。 #9266展示了视觉差异的示例。有关更多信息并提供有关此更改的反馈,请参见#9394。

在表达式中添加以测试所评估的功能是否位于给定的GeoJSON对象中(#9352)。我们知道一种边缘情况,在这种情况下,带有正确包装的坐标(例如经度-185)的点无法正确评估。有关更多信息,请参见(#9442)。

内部表达式的示例:" icon-opacity&#34 ;: [" case&#34 ;、 [" ==&#34 ;、 [" within&#34 ;、 " some-polygon"],true],1,[" ==",[" in"," some-polygon"] ,false],0]

Map API功能(例如easyTo和flyTo)现在支持padding:PaddingOptions,开发人员在构建浮动侧边栏时可让其移动地图的透视中心(#8638)

在所有设备分辨率和像素比率上,改善线型图案中使用的图案的缩放比例(#9266)

LngLatBounds.extend更加灵活,因为它现在接受具有lat和lon属性以及坐标数组的对象(#9293)

正确调整通过addImage(id,image,pixelRatio)添加的图案,而不是通过设备像素比率(不是设备像素比率)(#9372)

修复了尝试为已删除的图层设置要素状态时引发的异常,修复了#8634(#9305) 修复了非常旧版本的Chrome(大约2016年)的渲染错误,该版本的文本看起来比预期的要大得多(#9349) 修复了一个错误,该错误导致图标图像表达式的值为空字符串('')产生警告(#9380) 修复了在创建容器元素之前访问容器元素时某些弹出方法会引发错误的错误,修复了#9429(#9433) 修复了使用Haswell世代集成的Intel GPU时Windows上所有标签都显示在对角线上的错误(#9327,通过还原#9229修复) 在比例控制(#9276)(h / t胶状)和(#9284)(h / t pakastin)中在距离和单位之间增加空间 将一个showAccuracyCircle选项添加到GeolocateControl中,该选项以透明圆圈的形式显示用户位置的准确性。 默认情况下,Mapbox GL JS将显示此圆圈。 (#9253)(每小时Meekohi)

实施了新的图块覆盖算法,以在将来的版本中支持细节级别(#8975) 修复了以下问题:如果同时按下Alt,Cmd或Windows键,则按住Ctrl键单击以拖动旋转地图会被禁用(#9203) 修复了GeolocateControl中的错误,该错误在trackUserLocation为false时导致错误,并且在Geolocation API返回位置之前将控件删除了(#9291) 在mapboxgl.Popup中添加一个新的构造函数选项closeOnMove,以在地图位置更改时关闭弹出窗口(#9163) 允许创建没有样式的地图(将自动创建一个空白样式)(h / t @stepankuzmin)(#8924) map.once()现在允许将图层ID指定为第三个参数,使其与map.on()保持一致(#8875) 通过实施利用ImageBitmap和OffscreenCanvas(#8845)的渐进增强功能,提高山体阴影和栅格图层的性能

修复GeolocateControl中的错误,该错误可能导致一页上控件的多个实例可能导致用户位置不被更新(#9092)

修复由点重合的多边形和点数少于四个的多边形构成的查询填充拉伸(#9138)

修复"点击指南针"在某些移动设备上(将clickTolerance添加到DragRotateHandler中)(#9015)(h / t Yanonix)

修复了在CSP中不允许使用script-src:blob:的页面上无法使用rtl-text-plugin呈现的RTL文本的问题(#9122)

使用格式表达式内的图像表达式添加将图像插入文本标签的功能:" text-field&#34 ;: [" format"," Some text",[& #34; image"," my-image"],"其他一些文字"](#8904)

添加对可拉伸图像(又称九部分或九补丁图像)的支持。可拉伸图像可以与图标文本适合一起使用,以绘制具有未拉伸的角和边界的调整大小的图像。 (#8997)

添加表达式。它可以检查值是否在数组([" in&#34 ;,子字符串,字符串])中或子字符串在字符串中([" in&#34 ;、子字符串,字符串])中( #8876)

允许渲染小于512像素的完整世界。要恢复以前的限制调用图。setMinZoom(0)(#9028)

在使用addImage和removeImage更改使用的图像后修复地图渲染(#9016)

该补丁引入了两个解决方法,它们解决了与Safari中无限内存增长有关的长期问题,包括#8771和#4695。我们已经发现Safari中发生了两次内存泄漏:一次是CacheStorage API中的泄漏(由#8956解决),另一次是通过Transferables在网络工作者之间传输数据(由#9003解决)。

当使用Transferable对象将ArrayBuffers传输到WebWorkers时,实现Safari中内存泄漏的解决方法。如果GL-JS检测到它正在Safari中运行,则将禁止使用Transferables将数据传输到WebWorkers。 (#9003)

将outofmaxbounds事件添加到GeolocateControl,当用户不在map.maxBounds(#8756)(h / t MoradiDavijani)时发出

添加mapboxgl.getRTLTextPluginStatus()来查询rtl-text-plugin的当前状态,以便在需要时更容易清除插件。 (参考号#7869)(#8864)

允许将哈希映射选项设置为字符串,这会将URL中的映射哈希设置为自定义查询参数。 (#8603)(小时SebCorbin)

减少要素属性中包含长字符串的矢量切片的内存使用情况。 (#8863) 修复了启用图标文字匹配功能时,文本变量锚在与图标碰撞期间不尝试多个放置的问题。 (#8803) 修复合并处理图像运算符的方式,以便正确呈现可用图像(#8839) 调整地图大小或旋转屏幕时,请不要取消GeolocateControl中的跟随模式(#8736) 修复了争用条件,该争用条件在重新加载源时删除地图时会产生错误。 #8711 修复了竞争条件,即在IE11中的load事件后有时未触发render事件。 #8708 允许在格式化的表达式中使用文本颜色,以便能够以不同的颜色绘制标签的不同部分。 #8068

改进图块加载逻辑以更积极地取消请求,从而在快速缩放或平移时提高性能。 #8633 聚焦时(例如使用Tab键)在控制按钮上显示轮廓,以实现更好的可访问性。 #8520 添加MercatorCoordinate.meterInMercatorCoordinateUnits方法,可以更轻松地从仪表单位转换为自定义图层中使用的坐标值。 #8524(h / t @andrewharvey) 修复了本地CJK字体会在缩放过的图块中切换为服务器生成的字体的错误。 #8657 修复了一个错误,即当填充和线条图层来自同一来源时,它们无法在填充拉伸上正确呈现。 #8661 修复了从文件URL加载的文档中相对file:// URL的分类。 #8612 从程序包依赖项中删除esm(这样就不会在npm install mapbox-gl上安装它)。 #8586(h / t @DatGreekChick)

修复了NavigationControl罗盘按钮中的错误,该错误阻止其随地图一起旋转(#8605) 为圆,填充和线图层添加* -sort-key布局属性,以指示在单个图层中哪些要素显示在其他要素之上(#8467) 添加“ map visualizePitch”选项,该选项可在地图俯仰时使指南针倾斜(#8208,由#8296固定)(h / t pakastin) 修复对text-variable-anchor的更改,以使先前的锚位置仅在更新的数组中存在时才优先(考虑到错误修复,但从技术上讲是对先前行为的重大更改)(#8473) 修复未定义startPos的标记的点击事件中的错误(#8462)(h / t @msbarry) 作为性能优化,添加了在queryRenderedFeatures和querySourceFeatures调用期间禁用验证的功能(#8211)(h / t gorshkov-leonid) 当允许图标重叠但不允许文本重叠时,以symbol-z-order:viewport-y改善符号层的渲染(#8180)

最好在零宽度的空间处使用折线,以便为日本标签提供更好的断点建议(#8255) 向CustomLayerInterface的onRemove函数添加WebGLRenderingContext参数,以允许直接清除相关上下文(#8156)(h / t ogiermaitre) 通过将setZoomRate和setWheelZoomRate方法添加到ScrollZoomHandler(#7863)(h / t sf31),允许自定义缩放速度 将trackPointer方法添加到Popup API,当光标位于地图内时,它会不断将弹出窗口重新定位到鼠标光标(#7786) 修复在带有text-align的元素内时,地图无法正确显示:居中(#8227)(h / t mc100s) 此版本取代了现有的“地图视图”定价模型,而采用了“地图加载”模型。 在最近的博客文章中了解有关这些更改的更多信息。 通过升级到此版本,您可以选择新的地图加载价格。

这项更改使我们可以实施更标准化和可预测的GL JS地图使用计费方法。无论何时加载网站或网络应用程序,都需要向您收费,而不是在用户平移和缩放地图时向您收费,这会激励开发人员创建高度互动的地图体验。新的定价结构还创建了更大的免费套餐,以帮助开发人员开始使用Mapbox工具构建其应用程序,而按需付费定价和自动批量折扣可以帮助您的应用程序通过Mapbox进行扩展。会话计费还使发票与Web开发人员已经跟踪的指标保持一致,并使与其他映射提供程序的使用情况比较更加容易。

当(且仅当)从具有Mapbox访问令牌集(mapboxgl.accessToken)的Mapbox API加载图块时,名为sku的查询参数将添加到所有矢量,栅格和raster-dem图块请求中。每个地图实例均使用唯一的sku值,该值每12小时刷新一次。令牌本身由令牌版本(始终为“ 1”),SKU ID(始终为“ 01”)和随机的10位62进制数字组成。令牌的目的是允许对服务器端的地图会话进行计量。从新的地图实例化开始的会话一直持续到地图被销毁或经过12小时(以先到者为准)为止。

有关价格变化的更多信息,您可以阅读我们的博客文章并查看带有价格计算器的新价格页面。与往常一样,您也可以通过https://support.mapbox.com与我们的团队联系。

默认情况下启用localIdeographFontFamily映射选项。这可能会更改CJK标签的呈现方式,但会大大提高CJK映射的性能(因为浏览器不再需要从服务器下载大量字体数据)。添加localIdeographFontFamily:false可将其关闭。 #8008

添加了对动态生成样式图像的支持(例如,基于特征属性的绘图图标)。 #7987

为在不允许worker-src:blob的严格CSP环境中添加了一个新的mapbox-gl-csp.js软件包。 #8044

添加了rel =" noopener"属性指向指向外部网站的链接(例如Mapbox徽标和OpenStreetMap编辑链接),以提高安全性。 #7914

改进canvasSource.pause的行为,使其更加可靠并能够呈现单个帧。 #8130 修复了Mac Safari 12+中的一个错误,该错误会消失,直到您与地图进行交互。 8193 修复了一个错误,其中map.getCenter()返回了对内部LngLat对象的引用而不是克隆它,从而导致潜在的可变性错误。 #7922 修复了为非多边形图层添加填充挤出图层会导致视觉伪像的错误。 #7685 修复了以下错误:调用Map#removeFeatureState不会从某些图块缩放中删除状态#8087 修复了一个错误,其中removeFeatureState对ID等于0的功能不起作用。#8150(h / t jutaz) 升级Earcut以修复渲染包含重合孔洞的多边形的罕见错误(#7806,由#7878修复)

修复了在不支持WebP的浏览器中错误地请求WebP图像的错误(#7817)(#7819) 修复了cameraForBounds返回带有不对称填充/偏移的错误CameraOptions的错误(#7517,由#7518修复)(h / t mike-marcacci) 当参数是URL时,使用diff + patch方法来map.setStyle(#4025,由#7562修复) 仅在地图空闲时才通过将栅格源与像素网格对齐来解决抖动问题(7426) 渲染修复了一个错误,即当视口中存在错误的图块时,某些运行时样式更改后,地图状态将不会恢复为已加载状态(#7355) 不要使用* -allow-overlap淡入符号:平移到视口时为true(#7172,由#7244修复) 库修复了导致归因无法在Internet Explorer中正确显示的错误(#3945,由#7391修复)

修复了带有icon-allow-overlap:true,text-allow-overlap:true,text-optional:false的符号会在不应该显示图标的情况下显示图标的错误(#7041) 修复了地图不会在Map#FlyTo(#7222)(#7223)(h / t benoitbzl)请求的确切缩放级别下停止的问题 缩放时将地图保持在多点触摸手势的中心位置(#6722)(#7191)(h / t pakastin) 更新样式规范的旧gl-style-migrate脚本,以包括将旧版函数和过滤器转换为等效的表达式(#6927,由#7095修复) 修复AJAX请求在iOS Web视图上加载本地文件的方式中的错误(#6610)(h / t oscarfonts ......