浏览代码

增加对圆形空域没有半径对支持

wd 7 年之前
父节点
当前提交
6d1c3d3700
共有 1 个文件被更改,包括 32 次插入11 次删除
  1. 32 11
      index.js

+ 32 - 11
index.js

@@ -26,35 +26,39 @@ function getDefaultStyle() {
     return {imageName, lineWidth, strokeColor, fillColor}
 }
 
-function getCircles(airspaceInfos, setStyle, currentAirspaceIndex) {
+function getCirclesAndMarkers(airspaceInfos, setStyle, currentAirspaceIndex) {
     let circles = [];
+    let markers = [];
     if (!Array.isArray(airspaceInfos)) {
-        return circles;
+        return {circles, markers};
     }
 
-    let {lineWidth, strokeColor, fillColor} = getDefaultStyle()
+    let {imageName, lineWidth, strokeColor, fillColor} = getDefaultStyle()
+
     //通过该方法获取样式
     let circleStyle = setStyle('circle');
     if(circleStyle) {
         lineWidth = circleStyle.lineWidth
         strokeColor = circleStyle.strokeColor
         fillColor = circleStyle.fillColor
+        imageName = circleStyle.imageName
     }
 
 
     for (let i = 0; i < airspaceInfos.length; i++) {
         let tmpCircle = airspaceInfos[i]
-        let airspaceTypeFix, radiusFix
+        let airspaceTypeFix, radiusFix, dataType
         if (tmpCircle.airspaceType) {
             airspaceTypeFix = 'airspaceType';
             radiusFix = 'radius'
+            dataType = 1
         } else {
             airspaceTypeFix = 'airspace_type';
             radiusFix = 'radius_of_flying'
+            dataType = 2
         }
 
         if (tmpCircle[airspaceTypeFix] == Global.airspaceType.circle && currentAirspaceIndex != i) {
-
             let coordinate = {};
             if (tmpCircle.center_point_of_flying) {
                 coordinate.latitude = tmpCircle.center_point_of_flying.lat;
@@ -65,20 +69,25 @@ function getCircles(airspaceInfos, setStyle, currentAirspaceIndex) {
             }
 
             let radius = tmpCircle[radiusFix];
-            let circle = {lineWidth, strokeColor, fillColor, radius, coordinate}
-            circles.push(circle);
+
+            if(radius) {
+                let circle = {lineWidth, strokeColor, fillColor, radius, coordinate}
+                circles.push(circle);
+            } else {
+                markers.push(addOvalPointConfig(coordinate.lat, coordinate.lng, imageName, dataType));
+            }
         }
     }
 
-    return circles;
+    return {circles, markers};
 }
 
-function getCircleSelector(airspaceInfos, setStyle, currentAirspaceIndex) {
+function getCircleAndMarkerSelector(airspaceInfos, setStyle, currentAirspaceIndex) {
     return createSelector(
         airspaceInfos,
         () => setStyle,
         currentAirspaceIndex,
-        getCircles
+        getCirclesAndMarkers
     );
 }
 
@@ -475,6 +484,17 @@ function getRegionPointsSelector(circles, lineAndMarkers, polygonAndMarkers) {
     );
 }
 
+function getCircles(circleAndMarker) {
+    return circleAndMarker.circles;
+}
+
+function getCircleSelector(circleAndMarker) {
+    return createSelector(
+        circleAndMarker,
+        getCircles
+    );
+}
+
 function getLines(lineAndMarker) {
     return lineAndMarker.lines;
 }
@@ -508,7 +528,8 @@ let setStyle = (style) => {
 //获取selector
 export function getShapesSelector(airspaceInfos, style, currentAirspaceIndex) {
     currentAirspaceIndex = currentAirspaceIndex ? currentAirspaceIndex : () => -1;
-    let circles = getCircleSelector(airspaceInfos, setStyle(style), currentAirspaceIndex);
+    let circlesAndMarkers = getCircleAndMarkerSelector(airspaceInfos, setStyle(style), currentAirspaceIndex);
+    let circles = getCircleSelector(circlesAndMarkers);
     let linePolygonsAndMarkers = getLinePolygonsAndMarkerSelector(airspaceInfos, setStyle(style), currentAirspaceIndex);
     let lines = getLineSelector(linePolygonsAndMarkers);
     let polygonAndMarkers = getPolygonAndMarkerSelector(airspaceInfos, setStyle(style), currentAirspaceIndex);