functions/events 使用 Mapbox API 地理编码标记

functions/events using Mapbox API Geocoder Marker

我问这个是因为我已经在 Google 地图 API 中完成了此操作,但到目前为止还没有在 Mapbox API 上找到任何相关文档。我希望能够使用地理编码器标记创建函数。我发现关于操纵标记的最接近的事情是改变标记的颜色:

var geocoder = new MapboxGeocoder({
accessToken: mapboxgl.accessToken,
marker: {
color: 'orange'
},
mapboxgl: mapboxgl
});

但是,我希望能够引用标记,以便我可以创建基于 onmouseenter 和 onmouseleave 事件的函数。有什么建议么?非常感谢。

目前没有记录的方法来访问 MapboxGeocoder 控件添加到地图的标记。

虽然不是 public API 的一部分,但您可以通过 geocoder.mapMarker 访问该标记,因为 public [=22] 中没有记录=] 它可能会在未来的版本中发生变化,并且不保证使用。

一旦您引用 geocoder.mapMarker,您就可以使用 geocoder.mapMarker.getElement() 获取实际的 Marker 元素,并使用标准 HTML/JS 在其上添加事件侦听器。

或者您可以选择不使用内置标记,而是监听 MapboxGeocoder 事件并在地图上放置您自己的标记。

试试这个:

var geocoder = new MapboxGeocoder({
    accessToken: mapboxgl.accessToken,
    mapboxgl: mapboxgl              
});

geocoder.on('result', e => {
    console.log(e.result.center);
});