Browse Source

Merge branch 'add_circle_marker_support' into 'master'

如果没有给圆的半径,返回一个点

See merge request BA/amap-shapes-generator!26
wd 7 years ago
parent
commit
9e9ab33a53
1 changed files with 40 additions and 15 deletions
  1. 40 15
      index.js

+ 40 - 15
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.latitude, coordinate.longitude, imageName, dataType));
+            }
         }
     }
 
-    return circles;
+    return {circles, markers};
 }
 
-function getCircleSelector(airspaceInfos, setStyle, currentAirspaceIndex) {
+function getCircleAndMarkerSelector(airspaceInfos, setStyle, currentAirspaceIndex) {
     return createSelector(
         airspaceInfos,
         () => setStyle,
         currentAirspaceIndex,
-        getCircles
+        getCirclesAndMarkers
     );
 }
 
@@ -430,10 +439,13 @@ function getPolygonAndMarkerSelector(airspaceInfos, setStyle, currentAirspaceInd
     );
 }
 
-function getMarkers(polygonAndMarkers, lineAndMarkers) {
+function getMarkers(circlesAndMarkers, polygonAndMarkers, lineAndMarkers) {
     let markers = [];
+    if (circlesAndMarkers) {
+        markers = [...circlesAndMarkers.markers]
+    }
     if (polygonAndMarkers) {
-        markers = [...polygonAndMarkers.markers]
+        markers = [...markers, ...polygonAndMarkers.markers]
     }
     if (lineAndMarkers) {
         markers = [...markers, ...lineAndMarkers.markers]
@@ -441,8 +453,9 @@ function getMarkers(polygonAndMarkers, lineAndMarkers) {
     return markers
 }
 
-function getMarkerSelector(polygonAndMarkers, lineAndMarkers) {
+function getMarkerSelector(circlesAndMarkers, polygonAndMarkers, lineAndMarkers) {
     return createSelector(
+        circlesAndMarkers,
         polygonAndMarkers,
         lineAndMarkers,
         getMarkers
@@ -478,6 +491,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;
 }
@@ -511,12 +535,13 @@ 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);
     let polygons = getPolygonSelector(polygonAndMarkers, linePolygonsAndMarkers);
-    let markers = getMarkerSelector(polygonAndMarkers, linePolygonsAndMarkers);
+    let markers = getMarkerSelector(circlesAndMarkers, polygonAndMarkers, linePolygonsAndMarkers);
     let regionPoints = getRegionPointsSelector(circles, linePolygonsAndMarkers, polygonAndMarkers);
     return {
         markers,