mapboxgl | 面图层添加标注
const testGeoJOSN = () => {
// 加载 GeoJSON 数据
map.addSource("geojson", {
type: "geojson",
data: china,
generateId: true,
});
map.addLayer({
id: "china",
type: "fill",
source: "geojson",
paint: {
"fill-color": "#627BC1",
"fill-opacity": [
"case",
["boolean", ["feature-state", "hover"], false],
1,
0.5,
],
},
});
map.addLayer({
id: "china_symbol",
type: "symbol",
source: "geojson",
paint: {
"text-opacity": [
"case",
["boolean", ["feature-state", "hover"], false],
1,
0,
],
},
layout: {
"text-field": "{name}",
"text-font": ["Open Sans Semibold"],
"text-anchor": "center",
// "text-offset": [0, 0.6],
// "icon-image": "monument-15",
// "icon-anchor": "center",
// "icon-allow-overlap": true,
// "icon-keep-upright": false,
"symbol-placement": "point",
},
});
map.on("mousemove", "china", (e) => {
if (e.features.length > 0) {
if (hoveredPolygonId !== null) {
map.setFeatureState(
{ source: "geojson", id: hoveredPolygonId },
{ hover: false }
);
}
hoveredPolygonId = e.features[0].id;
map.setFeatureState(
{ source: "geojson", id: hoveredPolygonId },
{ hover: true }
);
}
});
map.on("mouseleave", "china", () => {
if (hoveredPolygonId !== null) {
map.setFeatureState(
{ source: "geojson", id: hoveredPolygonId },
{ hover: false }
);
}
hoveredPolygonId = null;
});
};
其实就是用同一个source添加一个点图层标注,但是这个标注有一个问题就是,一个面可能会有多个标注存在,如图所示
分类:
GIS / Mapbox-GL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
2022-09-27 主机访问不了Linux虚拟机