diff --git a/kicc-ui/src/components/AMap/src/Amap.vue b/kicc-ui/src/components/AMap/src/Amap.vue index f796bca5..c710793f 100644 --- a/kicc-ui/src/components/AMap/src/Amap.vue +++ b/kicc-ui/src/components/AMap/src/Amap.vue @@ -29,7 +29,7 @@ /> - + item.id == value); if (smallHospitalMap) { - // 绘制20公里,园形矢量图,并且检测这个范围内是否有收样员 - map.remove(scanTakeSpecimenCircleRange); - // 扫描收样员园形范围 - scanTakeSpecimenCircleRange = new AMap.Circle({ - radius: 8000, - borderWeight: 3, - strokeColor: '#3600ff', - strokeOpacity: 0.2, - strokeWeight: 6, - fillOpacity: 0.4, - strokeStyle: 'dashed', - strokeDasharray: [8, 8], - fillColor: '#1791fc', - zIndex: 50 - }); - + map.remove(scanTakeSpecimenCircleRange || {}); scanTakeSpecimenCircleRange.setCenter([smallHospitalMap.lng, smallHospitalMap.lat]); map.add(scanTakeSpecimenCircleRange); map.setFitView([ scanTakeSpecimenCircleRange ]); - // 查找园圈内的收样员 - const gatherCircleRangeSpecimen = []; - for (let i = 0; i < smallHospitalMapList.length; ++i) { - const smallHospitalMap = smallHospitalMapList[i]; - const specimenLngLat = new AMap.LngLat(smallHospitalMap.lng, smallHospitalMap.lat); - if (scanTakeSpecimenCircleRange.contains(specimenLngLat)) { - console.log('查找到'); - } else { - console.log('没有查找到'); - } - } - - - - + const smallHospitalMarker = new AMap.Marker({ + position: [smallHospitalMap.lng, smallHospitalMap.lat], + }); + const smallHospitalPosition = smallHospitalMarker.getPosition(); + // 计算最优先收样员顺序 + const optimalSpecimen = specimenMapList.sort((firstEl, secondEl) => { + const marker1 = new AMap.Marker({ + position: [firstEl.lng, firstEl.lat], + }),marker2 = new AMap.Marker({ + position: [secondEl.lng, secondEl.lat], + }); + const position1 = marker1.getPosition(), + position2 = marker2.getPosition(); + return Math.round(smallHospitalPosition.distance(position1)) - Math.round(smallHospitalPosition.distance(position2)); + }); + mapState.takeSpecimenList = optimalSpecimen.map(item => ({ value: item.id, label: item.title })); } else { throw '查找不到发单点数据,请检查发单点!'; }