arcgis for js4.x自定义Graphic数组创建FeatureLayer添加标注
实现效果
代码如下
const setPoint = () => {
const data = [
{
id: 11,
poi: [120.28985, 31.54225],
name: '金塘泵站'
},
{
id: 22,
poi: [120.28985, 31.54725],
name: '朝阳泵站'
}
]
const pointGraphic: any[] = []
data.forEach((d) => {
const [long, lat] = d.poi
const point = new Graphic({
attributes: {
...d,
pop: '4000',
id: 'point.' + d.id
},
geometry: new Point({
longitude: long,
latitude: lat
})
})
pointGraphic.push(point)
})
const symbol = {
type: 'picture-marker',
url: PointSewageImg,
width: '30px',
height: '30px',
xoffset: '0px',
yoffset: '15px'
}
const fields: any[] = [
{
name: 'ObjectID',
alias: 'ObjectID',
type: 'oid'
}
]
for (const col in pointGraphic[0]['attributes']) {
fields.push({
name: col,
alias: col,
type: 'string'
})
}
// 标注
const nameClass0: any = {
symbol: {
type: 'text', // autocasts as new TextSymbol()
color: 'black',
haloColor: 'white',
haloSize: 1,
// backgroundColor: [213, 184, 255, 0.75],
// borderLineColor: 'green',
// borderLineSize: 1,
// yoffset: '2px',
font: {
//autocasts as new Font()
size: 10
}
},
labelPlacement: 'above-center',
labelExpressionInfo: {
expression: '$feature.name'
}
}
const pointLayer = new FeatureLayer({
source: pointGraphic,
renderer: {
type: 'class-breaks',
field: 'pop',
classBreakInfos: [
{
minValue: 4000,
maxValue: 7000,
symbol: symbol
}
]
} as any,
geometryType: 'point',
fields: fields,
outFields: ['*'],
objectIdField: 'ObjectID',
labelingInfo: [nameClass0]
})
mapView.map.add(pointLayer)
}
THE END
分类:
ArcGIS
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)