代码之家  ›  专栏  ›  技术社区  ›  Islacine

使用ArcgisAPI绘制后如何获取图形点

  •  2
  • Islacine  · 技术社区  · 6 年前

    我想得到多边形点,直线点,以便将它们存储在数据库中。我使用的是ArcgisAPI 3.26,我想知道如何才能得到这些分数。以下是我如何绘制图形

    // markerSymbol is used for point and multipoint, see http://raphaeljs.com/icons/#talkq for more examples
        var markerSymbol = new SimpleMarkerSymbol();
        markerSymbol.setPath("M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.868,21.375h-1.969v-1.889h1.969V21.375zM16.772,18.094h-1.777l-0.176-8.083h2.113L16.772,18.094z");
        markerSymbol.setColor(new Color("#00FFFF"));
    
        // lineSymbol used for freehand polyline, polyline and line. 
        var lineSymbol = new CartographicLineSymbol(
          CartographicLineSymbol.STYLE_SOLID,
          new Color([255,0,0]), 10, 
          CartographicLineSymbol.CAP_ROUND,
          CartographicLineSymbol.JOIN_MITER, 5
        );
    
        // fill symbol used for extent, polygon and freehand polygon, use a picture fill symbol
        // the images folder contains additional fill images
        var fillSymbol = new PictureFillSymbol(
          new SimpleLineSymbol(
            SimpleLineSymbol.STYLE_SOLID,
            new Color('#000'), 
            1
          ), 
          42, 
          42
        );
    

    我可以用这个函数显示图形addgraphics

          // figure out which symbol to use
          var symbol;
          if ( evt.geometry.type === "point" || evt.geometry.type === "multipoint") {
            symbol = markerSymbol;
            //alert(markerSymbol.xoffset);
          } else if ( evt.geometry.type === "line" || evt.geometry.type === "polyline") {
            symbol = lineSymbol;
            //alert(lineSymbol.toJson());
          }
          else {
            symbol = fillSymbol;
            alert(fillSymbol);
          }
    
          map.graphics.add(new Graphic(evt.geometry, symbol));
          alert("X: " + evt.mapPoint.x.toString() + ", <br>Y: " + evt.mapPoint.y.toString());
    
        }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   LMokrane    6 年前

    你可以从 evt.geometry 性能:

    对于点: evt.geometry.x evt.geometry.y

    对于多点: evt.geometry.points 返回数组点 https://developers.arcgis.com/javascript/3/jsapi/multipoint-amd.html#points

    折线: evt.geometry.path 返回包含点数组的路径数组 https://developers.arcgis.com/javascript/3/jsapi/polyline-amd.html#paths