angular - 将默认蓝色标记更改为我自己的图标标记,mapbox angular
问题描述
我正在尝试将默认的蓝色标记更改为我自己的类型,我遇到了问题,因为文档中提到了更改多个标记,我将始终在我的地图中查看一个标记。有没有办法做到这一点?地图正在加载,但现在没有显示任何标记,所以我很接近,但没有雪茄。我想使用 ALARM_CENTER.svg 图标。
组件.ts:
createMap(lng: number, lat: number, zoom: number, createMarker: boolean) {
this.mapa = new mapboxgl.Map({
accessToken: environment.mapBox,
container: 'mapElement',
style: 'mapbox://styles/mapbox/streets-v11',
center: [lng, lat], // starting position [lng, lat]
zoom: zoom,
attributionControl: false,
});
createMarker ? this.createMarker(lng, lat) : '';
}
createMarker(lng: number, lat: number) {
var el = document.createElement('div');
el.className = 'marker';
new mapboxgl.Marker({element: "<div class='marker'>"}).setLngLat([lng, lat]).addTo(this.mapa);
}
样式.css:
.marker {
background-image: url("/assets/shopProtection/ALARM_CENTER.svg");
background-size: cover;
width: 50px;
height: 50px;
cursor: pointer;
}
解决方案
这是一个组合,我把css放在主要的style.css中,而不是component.css,这与惰性组件没有在component.css中加载样式有关。最终代码:
组件.ts
createMarker(lng: number, lat: number) {
var el = document.createElement('div');
el.className = 'marker';
const marker = new mapboxgl.Marker(el).setLngLat([lng, lat]).addTo(this.mapa);
}
样式.css:
.marker {
background-size: contain;
width: 50px;
height: 50px;
background-image: url("/assets/img/marker.svg");
background-repeat: no-repeat;
}
推荐阅读
- c# - 解密的 Json Web 令牌数据中的奇怪字符
- python - Web2Py:不跟踪模块之间的更改
- visual-studio - 是否可以重用表单但得到不同的结果?
- mysql - 将 CPLEX OPL 模型与 MySQL DB 连接
- mysql - 如何在SQL中的特殊字符(@)之后获取字符串
- php - 为每个帖子显示一个类别(自定义帖子)
- python-3.x - 如何在 Python 中使用 subprocess.Popen 返回编码值?
- sql - 在 SQL Server 中安全移动/归档行
- javascript - 为什么这个 NULL 变量是真实的?
- bash - 通过 || 回退命令 抛出“没有这样的文件或目录”