如何在 mapbox-gl-js 中的导航控件上显示工具提示?

How to display a tooltip on the navigation controls in mapbox-gl-js?

我正在为非常缺乏经验的用户构建一个 mapbox-gl-js 应用程序,并希望提供尽可能多的指导。用于放大/缩小/地理定位等的标准图标按钮很棒,但作为额外的帮助,我想在鼠标悬停时显示一个工具提示,其中包含按钮功能的文本描述 "Zoom In"、"Zoom Out" , "Zoom to current location" 等等

我查看了 API 文档并查看了 github 中的源代码,但看不到提供此自定义的选项。如果其他人成功地做到了这一点,或者对如何在不分叉 mapbox 的情况下实现这一点有一些建议,我将非常感激!

最好的解决方案是使用 options.locale API https://docs.mapbox.com/mapbox-gl-js/api/map/

用于 UI 字符串(例如控件工具提示)的默认本地化 table 的补丁。 locale 对象将命名空间 UI 字符串 ID 映射到目标语言中的已翻译字符串;有关所有支持的字符串 ID 的示例,请参阅 src/ui/default_locale.js。该对象可以指定所有 UI 字符串(从而添加对新翻译的支持)或仅指定字符串的子集(从而修补默认翻译 table)。

在default_locale.js中可以找到所有默认工具提示

const defaultLocale = {
    'AttributionControl.ToggleAttribution': 'Toggle attribution',
    'AttributionControl.MapFeedback': 'Map feedback',
    'FullscreenControl.Enter': 'Enter fullscreen',
    'FullscreenControl.Exit': 'Exit fullscreen',
    'GeolocateControl.FindMyLocation': 'Find my location',
    'GeolocateControl.LocationNotAvailable': 'Location not available',
    'LogoControl.Title': 'Mapbox logo',
    'NavigationControl.ResetBearing': 'Reset bearing to north',
    'NavigationControl.ZoomIn': 'Zoom in',
    'NavigationControl.ZoomOut': 'Zoom out',
    'ScaleControl.Feet': 'ft',
    'ScaleControl.Meters': 'm',
    'ScaleControl.Kilometers': 'km',
    'ScaleControl.Miles': 'mi',
    'ScaleControl.NauticalMiles': 'nm'

};

此外,某些控制元素(例如全屏按钮)具有内部状态,基于此状态,UI 具有不同的工具提示内容,这意味着您无法覆盖这些元素的工具提示值