Popup
弹窗组件。
new Popup(options: Object?)
参数
名称 | 类型 | 描述 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | Object | 必填参数
|
案例
var markerHeight = 50, markerRadius = 10, linearOffset = 25;
var popupOffsets = {
'top': [0, 0],
'top-left': [0,0],
'top-right': [0,0],
'bottom': [0, -markerHeight],
'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],
'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],
'left': [markerRadius, (markerHeight - markerRadius) * -1],
'right': [-markerRadius, (markerHeight - markerRadius) * -1]
};
var popup = new mapmost.Popup({offset: popupOffsets, className: 'my-class'})
.setLngLat(e.lngLat)
.setHTML("<h1>Hello World!</h1>")
.setMaxWidth("300px")
.addTo(map);
实例成员
addTo
在地图上添加弹窗。
参数
名称 | 类型 | 描述 |
---|---|---|
map | Map | 必填要添加 Popup 的 Mapmost GL JS 地图。 |
案例
var marker = new mapmost.Popup()
.setLngLat([30.5, 50.5])
.addTo(map); // 在地图上添加弹窗
getElement
返回Popup的 HTML 元素。
案例
// 修改 `Popup` 元素的字号大小
const popup = new mapmost.Popup()
.setLngLat([-96, 37.8])
.setHTML("<p>Hello World!</p>")
.addTo(map);
const popupElem = popup.getElement();
popupElem.style.fontSize = "25px";
getLngLat
返回弹窗的锚所在的地理位置。
返回的经度会在先前通过 setLngLat 设置的经度的基础之上以 360 度的倍数来变化,这是因为 Popup 要将锚的经度完全包围在周边以保证弹窗能在屏幕上显示。
案例
const lngLat = popup.getLngLat();
getMaxWidth
返回弹窗的最大宽度。
案例
const maxWidth = popup.getMaxWidth();
isOpen
弹窗若处于弹出状态则为 true ,若处于关闭状态则为 false。
案例
const isPopupOpen = popup.isOpen();
remove
从添加地图中移除弹窗。
案例
var popup = new mapmost.Popup().addTo(map);
popup.remove();
setDOMContent
将弹窗内容设置为以 DOM 节点形式提供的元素。
参数
名称 | 类型 | 描述 |
---|---|---|
htmlNode | Node | 必填用于作为弹窗内容的 DOM 节点。 |
案例
// 用弹窗内容生成一个元素
var div = window.document.createElement('div');
div.innerHTML = 'Hello, world!';
var popup = new mapmost.Popup()
.setLngLat(e.lngLat)
.setDOMContent(div)
.addTo(map);
setHTML
将弹窗内容设置为以字符串形式提供的 HTML。
此方法不会进行 HTML 过滤或清理,因此只能用于受信任的内容。
参数
名称 | 类型 | 描述 |
---|---|---|
html | String | 必填用于代表弹窗内容的 HTML 字符串。 |
案例
const popup = new mapmost.Popup()
.setLngLat(e.lngLat)
.setHTML("<h1>Hello World!</h1>")
.addTo(map);
setLngLat
设置好弹窗的锚的地理位置后使弹窗移动过去。替代了 trackPointer() 的效果。
参数
名称 | 类型 | 描述 |
---|---|---|
lnglat | LngLatLike | 必填设置弹窗的地理位置。 |
案例
popup.setLngLat([-122.4194, 37.7749]);
setMaxWidth
设置弹窗的最大宽度。实质上是在设置 CSS 的 max-width 属性。
参数
名称 | 类型 | 描述 |
---|---|---|
maxWidth | String | 必填表示最大宽度值的字符串。 |
案例
popup.setMaxWidth('50');
setText
将弹窗的内容设置为一串文本。
此功能将在 DOM 内创建一个 Text 节点,从而使原始 HTML 无法被插入。当弹窗内容由用户提供时,可使用此方法作为针对 XSS 的安全保护措施。
参数
名称 | 类型 | 描述 |
---|---|---|
text | String | 必填弹窗的文本内容。 |
案例
var popup = new mapmost.Popup()
.setLngLat(e.lngLat)
.setText('Hello, world!')
.addTo(map);
trackPointer
利用弹窗的锚,借助指针设备,追踪屏幕上光标的位置(在触屏模式下隐藏)。替代了 setLngLat 的效果。在多数情况下,此处 closeOnClick 和 closeButton 应设置为 false 。
案例
const popup = new mapmost.Popup({closeOnClick: false, closeButton: false})
.setHTML("<h1>Hello World!</h1>")
.trackPointer()
.addTo(map);