javascript - Mapbox GL JS:绘制没有坐标的标记
问题描述
有谁知道在没有坐标的 Mapbox GL JS 中绘制标记的方法?
我正在地图上绘制一堆带有弹出窗口的标记,但我有一些标记我不想在任何精确位置绘制。理想情况下,它们只是坐在屏幕底部的一个盒子里,当你移动地图时它们不会移动。
我已经为他们制作了一个容器来放置在 HTML 上,现在我只需要将它们放入其中,这样它们就可以相对于网页(而不是地图)坐下。除非您能想到更简单的解决方法。
我的一个想法是将地图中的标记复制到 HTML 对象中,然后以某种方式重现弹出元素,因为它们与地图框标记一起出现。
这是JS的一点:
// create a HTML element for each feature
var el = document.createElement('div');
el.className = "marker" + " " + typeTag + " " + impactTag;
el.innerHTML = '<i class="' + symbol + '"></i>';
// exclude Global markers for now
if (feature.properties['location'] !== 'Global') {
// make a marker for each feature and add to the map
new mapboxgl.Marker(el)
.setLngLat(feature.geometry.coordinates)
.setPopup(new mapboxgl.Popup({ offset: 10, closeButton: false }) // add popups
.setHTML('<h4 style="padding-bottom: 4px; border-bottom: 2px solid ' + colors[impactTag] + ';">' + feature.properties['title'] + '</h4><ul class="list-group list-tooltip"><li>Area of study: ' + feature.properties['location'] + '</li><li><div style="display:inline-block" class=' + impactTag + '>' + popupIcon[type] + "</div>"
+ impactTag + " " + 'that.</li></ul><p class="summary">'
+ summary + '</p><p class="citation"><a href="'
+ url + '" target="_blank">' + clipCitation + "),</a><span class='citation2'> " + feature.properties['journal'] + '</span></p>'))
.addTo(map);
}
// plot Global markers within globalcontainer - this is where I'm stumped...
else {
}
解决方案
您只需要 HTML 覆盖,而不是标记。最简单的方法是这样的:
<div id="map"></div>
<div id="overlay" style="position: absolute; top: 50px; left: 50px;">Overlay content here.</div>
推荐阅读
- python - 如何将 pd.cut 与大量垃圾箱一起使用?
- c# - 实体框架在实例化新实体时生成索引错误
- javascript - truepush 回调读取
- ios - 允许任意负载设置为 YES,但请求仍然失败?
- sql - 如何在熊猫中加入具有重叠时间窗口和匹配 ID 的两个数据框
- kubernetes-ingress - Kubernetes 入口重写
- android - 如何在不使用方法调用的风味的情况下从 Java 调用位于 Android Studio 风味特定文件夹中的 Kotlin 类?
- forms - 我如何垂直对齐中心表格
- javascript - 尝试了解连接组件的问题,任何帮助将不胜感激
- mysql - 使用 Join 在 MySQL 中创建一个显示销售额、退货和利润(销售额 - 退货)的视图