/** @format */ import _ from 'lodash'; import React, { useEffect, useRef, useState } from 'react'; import { createInfoWindow } from '../../../utils/index'; interface Basic2DMapMarkerProps { map: any; infoWindow?: any; windows?: any; data: any; label: any; parentId: string; series: any; iconSet: any; } const Basic2DMapMarker = (props: Basic2DMapMarkerProps) => { const { parentId = '1', data = [], label, series, iconSet, windows = { isSelfSet: false, textStyle: { fontSize: 12, color: 'yellow', fontWeight: 500, fontFamily: '微软雅黑', shadow: 'black', }, lineHeight: 15, borderRadius: 5, padding: { paddingTop: 5, paddingBottom: 5, paddingLeft: 5, paddingRight: 5, }, background: 'red', close: { color: 'white', size: 10, marginTop: 5, marginRight: 5, }, }, } = props; const [newData, setNewData] = useState(); let markerArr: any; useEffect(() => { let newData; if (data && data.length > 0) { newData = data.map((d: any) => { d.iconSrc = iconSet.baseIcon; d.baseIconHeight = iconSet.baseIconHeight; d.baseIconWidth = iconSet.baseIconWidth; d.baseIconOffsetHeight = iconSet.baseIconOffsetHeight; d.baseIconOffsetWidth = iconSet.baseIconOffsetWidth; return d; }); series.map((val: any) => { newData = data.map((d: any) => { if (d.type === val.type) { d.iconSrc = val.iconSrc; d.baseIconHeight = val.iconHeight; d.baseIconWidth = val.iconWidth; d.baseIconOffsetHeight = val.offsetHeight; d.baseIconOffsetWidth = val.offsetWidth; } return d; }); }); } setNewData(newData); }, [data, series, iconSet]); useEffect(() => { if (!window.__map2d[parentId]?.map) return; const marks = buildMarker(newData); markerArr = marks; }, [window.__map2d[parentId]?.map, newData]); useEffect(() => { if (!window.__map2d[parentId]?.map || windows.isSelfSet || !windows) return; markerArr && markerArr.forEach((item: any) => { item.on('click', markerClick); }); }, [windows, markerArr]); // useEffect(() => { // if (! window.__map2d[parentId]?.map || windows.isSelfSet || !windows) return; // markerArr && // markerArr.forEach((item: any) => { // item.setLabel({ // offset: new AMap.Pixel(label.offsetWidth, label.offsetHeight), //设置文本标注偏移量 // content: `