Javascript 将文本添加到地图框标记

Javascript 将文本添加到地图框标记,javascript,mapbox,Javascript,Mapbox,我目前正在使用如下代码向MapBox地图添加多个具有不同图标的标记: L.mapbox.accessToken = 'xxxx'; var map = L.mapbox.map('map') .setView([XX.0309243, XX.2741612], 14) .addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11')); var myLayer = L.mapbox.featureLayer().addTo(m

我目前正在使用如下代码向MapBox地图添加多个具有不同图标的标记:

L.mapbox.accessToken = 'xxxx';
var map = L.mapbox.map('map')
.setView([XX.0309243, XX.2741612], 14)
.addLayer(L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11'));
var myLayer = L.mapbox.featureLayer().addTo(map);
var geoJson = {
type: 'FeatureCollection',
features: [
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [XX.2741612, XX.0309243]
},
'properties': {
'title': '11-Jun 21:54:56',
'icon': {
'iconUrl': '/images/markers/marker_045.png',
'iconSize': [32, 32],
'iconAnchor': [25, 25],
'popupAnchor': [0, -25],
'className': 'dot'
}
}
}
]
};
// Set a custom icon on each marker based on feature properties.
myLayer.on('layeradd', function(e) {
var marker = e.layer,
feature = marker.feature;
marker.setIcon(L.icon(feature.properties.icon));
});
// Add features to the map.
myLayer.setGeoJSON(geoJson);

有什么我可以改变这段代码,将添加一个标签附近的每一个标记。现在,要查看文本,您需要单击标记。

好吧,这听起来很棘手,我想您可以试试这个来解决您的问题 它被称为
text variable anchor
,它允许高优先级标签移动位置以保持在地图上


可变标签放置
正文{margin:0;padding:0;}
#映射{位置:绝对;顶部:0;底部:0;宽度:100%;}
//要使地图显示,您必须
//从中添加您的访问令牌
// https://account.mapbox.com
mapboxgl.accessToken='';
变量位置={
“类型”:“功能集合”,
“特征”:[
{
“类型”:“特征”,
“属性”:{
“描述”:“福特剧院”,
“图标”:“剧院”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.038659,38.931567]
}
},
{
“类型”:“特征”,
“属性”:{
“描述”:“煤气灯”,
“图标”:“剧院”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.003168,38.894651]
}
},
{
“类型”:“特征”,
“属性”:{
“描述”:“可怕的哈利”,
“icon”:“bar”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.090372,38.881189]
}
},
{
“类型”:“特征”,
“属性”:{
‘描述’:‘自行车派对’,
“图标”:“自行车”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.052477,38.943951]
}
},
{
“类型”:“特征”,
“属性”:{
“描述”:“摇滚明星”,
“图标”:“音乐”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.031706,38.914581]
}
},
{
“类型”:“特征”,
“属性”:{
‘描述’:‘地区鼓乐部落’,
“图标”:“音乐”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.020945,38.878241]
}
},
{
“类型”:“特征”,
“属性”:{
‘描述’:‘摩城记忆’,
“图标”:“音乐”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.007481,38.876516]
}
}
]
};
var map=new mapboxgl.map({
容器:“映射”,
风格:'mapbox://styles/mapbox/light-v9',
中间:[-77.0438.907],
缩放:11.15
});
map.on('load',function()){
//添加包含位置坐标和信息的GeoJSON源。
map.addSource('places'{
'type':'geojson',
“数据”:位置
});
map.addLayer({
“id”:“poi标签”,
“类型”:“符号”,
'来源':'地点',
“布局”:{
“文本字段”:[“获取”,“描述”],
“文本变量定位点”:[“顶部”、“底部”、“左侧”、“右侧”],
“文本径向偏移”:0.5,
“文本对齐”:“自动”,
'图标图像':['concat',['get','icon'],'-15']
}
});
map.rotateTo(180,{持续时间:10000});
});
请参阅此处的更多信息:

嗯,这听起来很棘手,我想你可以试试这个来解决你的问题 它被称为
text variable anchor
,它允许高优先级标签移动位置以保持在地图上


可变标签放置
正文{margin:0;padding:0;}
#映射{位置:绝对;顶部:0;底部:0;宽度:100%;}
//要使地图显示,您必须
//从中添加您的访问令牌
// https://account.mapbox.com
mapboxgl.accessToken='';
变量位置={
“类型”:“功能集合”,
“特征”:[
{
“类型”:“特征”,
“属性”:{
“描述”:“福特剧院”,
“图标”:“剧院”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.038659,38.931567]
}
},
{
“类型”:“特征”,
“属性”:{
“描述”:“煤气灯”,
“图标”:“剧院”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.003168,38.894651]
}
},
{
“类型”:“特征”,
“属性”:{
“描述”:“可怕的哈利”,
“icon”:“bar”
},
“几何学”:{
'类型':'点',
“坐标”:[-77.090372,38.881189]
}
},
{
“类型”:“特征”,
“属性”:{
‘描述’:‘自行车派对’,
“图标”:“自行车”
},
var popup = new mapboxgl.Popup()
  .setText('Description')
  .addTo(map);

let marker = new mapboxgl
  .Marker()
    .setLngLat([-96, 37.8])
    .addTo(map)
    .setPopup(popup);