//打点(人员跟驻勤点的样式) //事件列表对搜索出的人员打点 export function markEventList(eventList, where = "") { let eventMarkers = []; eventList.length > 0 && eventList.map((item, index) => { const map = this.state.map; if (item.lnglat) { var marker = new AMap.Marker({ position: new AMap.LngLat(item.lnglat[0], item.lnglat[1]), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] title: "负责人:" + item.name || "--", content: '
' + index + "
", key: item.id, indexText: index, }); const that = this; // 手动驻的点给点击事件 AMap.event.addListener(marker, "click", function () { that.props.dispatch({ type: "command/setEventSelectIndex", payload: marker.w.key, }); that.openEventInfo(item, map, marker); }); marker.setAnimation("AMAP_ANIMATION_DROP"); eventMarkers.push(marker); } }); this.state.map.add(eventMarkers); this.state.map.setFitView(eventMarkers); //自适应显示所有的标注点 return eventMarkers; // this.setState({ personMarkers }); } //事件的打点更换 export function openEventInfo(item, map, marker) { let infoWindow = new AMap.InfoWindow({ isCustom: true, //使用自定义窗体 content: this.createEventInfoWindow(item), offset: new AMap.Pixel(16, -45), }); infoWindow.open(this.state.map, marker.getPosition()); const markers = this.state.eventMarkers; markers.map((itemMark, i) => { if (itemMark.w.key === item.id) { markers[i].setContent( '
' + itemMark.w.indexText + "
" ); } else { markers[i].setContent( '
' + itemMark.w.indexText + "
" ); } }); this.state.map.setZoomAndCenter(this.state.zoom, [ marker.getPosition().lng, marker.getPosition().lat, ]); //同时设置地图层级与中心点 // this.state.map.setCenter(marker.getPosition());//设置中心点 // this.setState({ // personMarkers: markers, // }); return markers; } //人员的打点更换图标,切换成未打点状态 export function closeEventMarkers() { const markers = this.state.eventMarkers; markers.map((itemMark, i) => { markers[i].setContent( '
' + itemMark.w.indexText + "
" ); }); return markers; } //人员图层对搜索出的人员打点 export function markPersonList(personList, where = "") { // where代表搜索的值,“软件园三期”“百川信”有特殊的打点位置需求 if (!!this.state.personMarkers) { this.state.map.remove(this.state.personMarkers); } if (this.state.beijingMarkers) { this.state.map.remove(this.state.beijingMarkers); } if (this.state.gaoqiMarkers) { this.state.map.remove(this.state.gaoqiMarkers); } let personMarkers = []; personList.length > 0 && personList.map((item, index) => { const map = this.state.map; if (item.lnglat) { var marker = new AMap.Marker({ position: new AMap.LngLat(item.lnglat[0], item.lnglat[1]), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] title: "负责人:" + item.name || "--", content: '
' + index + "
", key: item.perId, indexText: index, }); const that = this; //手动驻的点给点击事件 AMap.event.addListener(marker, "click", function () { that.props.dispatch({ type: "command/setPersonSelectIndex", payload: marker.w.key, }); that.openPersonInfo(item, map, marker); }); marker.setAnimation("AMAP_ANIMATION_DROP"); personMarkers.push(marker); } }); this.state.map.add(personMarkers); if (where === "厦门软件园三期" || where === "软件园三期") { let allMark = []; //假的点,用来居中到软三的作用 var marker1 = new AMap.Marker({ position: new AMap.LngLat(118.051211, 24.60608), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] }); allMark.push(marker1); var marker2 = new AMap.Marker({ position: new AMap.LngLat(118.047843, 24.611016), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] }); allMark.push(marker2); this.state.map.setFitView(allMark); } else { this.state.map.setFitView(personMarkers); //自适应显示所有的标注点 } return personMarkers; // this.setState({ personMarkers }); } //人员的打点更换 export function openPersonInfo(item, map, marker) { let infoWindow = new AMap.InfoWindow({ isCustom: true, //使用自定义窗体 content: this.createInfoWindow(item), offset: new AMap.Pixel(16, -45), }); infoWindow.open(this.state.map, marker.getPosition()); const markers = this.state.personMarkers; markers.map((itemMark, i) => { if (itemMark.w.key === item.perId) { markers[i].setContent( '
' + itemMark.w.indexText + "
" ); } else { markers[i].setContent( '
' + itemMark.w.indexText + "
" ); } }); this.state.map.setZoomAndCenter(this.state.zoom, [ marker.getPosition().lng, marker.getPosition().lat, ]); //同时设置地图层级与中心点 // this.state.map.setCenter(marker.getPosition());//设置中心点 // this.setState({ // personMarkers: markers, // }); return markers; } //人员的打点更换图标,切换成未打点状态 export function closePersonMarkers() { const markers = this.state.personMarkers; markers.map((itemMark, i) => { markers[i].setContent( '
' + itemMark.w.indexText + "
" ); }); return markers; } //搜索出的驻勤点打点 export function markerAttendanceList(attendanceList, typeName = "") { //先删除之前的打点 if (!!this.state.attendanceMarkers) { //如果是搜索列表的打点,先删除之前地图上的搜索的驻勤标记 this.state.map.remove(this.state.attendanceMarkers); } let attendanceMarkers = []; const length = attendanceList.length; if (length > 0) { for (let i = 0; i < length; i++) { if (attendanceList[i].lnglat) { var marker = new AMap.Marker({ position: new AMap.LngLat( attendanceList[i].lnglat[0], attendanceList[i].lnglat[1] ), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] title: "负责人:" + attendanceList[i].name || "--", content: attendanceList[i].markerIcon ? '
' + "
" : '
' + "
", comTaskId: attendanceList[i].comTaskId, markerIcon: attendanceList[i].markerIcon, clickMarkerIcon: attendanceList[i].clickMarkerIcon, }); marker.setAnimation("AMAP_ANIMATION_DROP"); const that = this; //手动驻的点给点击事件 AMap.event.addListener(marker, "click", function () { that.props.dispatch({ type: "command/setSelectIndex", // payload: marker.w.comTaskId, payload: i, }); }); attendanceMarkers.push(marker); } } } this.state.map.add(attendanceMarkers); this.state.map.setFitView(attendanceMarkers); //自适应显示所有的标注点 return attendanceMarkers; // this.setState({ attendanceMarkers }); } //驻勤点的打点更换 export function openAttendanceInfo(item, map, marker,currentIndex,afterIndex) { let infoWindow = new AMap.InfoWindow({ isCustom: true, //使用自定义窗体 content: this.createAttendanceInfoWindow(item), offset: new AMap.Pixel(16, -45), }); infoWindow.open(map, marker.getPosition()); map.setZoomAndCenter(this.state.zoom, [item.lnglat[0], item.lnglat[1]]); //同时设置地图层级与中心点 // map.setCenter([item.lnglat[0], item.lnglat[1]]); const markers = this.state.attendanceMarkers; // markers.map((itemMark, i) => { // if (itemMark.w.comTaskId == item.comTaskId) { // markers[i].setContent( // '
' + // "
" // ); // } else { // markers[i].setContent( // '
' + // "
" // ); // } // }); // this.setState({ // attendanceMarkers: markers, // }); markers[currentIndex].setContent( '
' + "
" ); if(afterIndex!=null&&afterIndex!=currentIndex){ markers[afterIndex].setContent( '
' + "
" ); } return markers; } //驻勤点的打点更换图标,切换成未打点状态 export function closeAttendanceMarker() { const markers = this.state.attendanceMarkers; markers.map((itemMark, i) => { markers[i].setContent( '
' + "
" ); }); // this.setState({ // attendanceMarkers: markers, // }); return markers; }