在gisMap上画一个圆圈

时间:2016-04-26 12:08:20

标签: javascript d3.js gis esri arcgis-js-api

我不知道如何在gismap上画一个圆圈。

点击按钮功能后获得圆的半径(val)。 如果半径是== 1,那么我想在地图上使用此绳索作为圆心(21.1,52.14)在地图上的半径1上绘制圆圈。

如何使用d3.js?

代码:

function map()
{
      var map;

      require(["esri/map", "dojo/domReady!"], function(Map) {
        map = new Map("map", {
          basemap: "topo",  //For full list of pre-defined basemaps, navigate to http://arcg.is/1JVo6Wd
          center: [14.70, 52.53], // longitude, latitude
          zoom: 6
        });
      });

}

    function DrawCircle()
    {
        var val = document.getElementById("InputMin1").value;

   if(val == 1)
    {
        var svg = d3.select('svg');
        var originX = 21.1; 
        var originY = 52.14;
        var outerCircleRadius = 100;

        var outerCircle = svg.append("circle").attr({
            cx: originX,
            cy: originY,
            r: outerCircleRadius,
            fill: "none",
            stroke: "black"
        });
    }

}

2 个答案:

答案 0 :(得分:1)

我知道这并没有回答关于D3.js的问题,但是如果没有特别的理由使用D3,为什么不使用esri/geometry/Circle模块呢?它已经包含在Esri JS API中,因此您不必引入额外的库。

  

由指定中心点创建的圆(多边形)。此点可以作为esri / geometry / Point对象或纬度/经度值数组提供。

参考:https://developers.arcgis.com/javascript/jsapi/circle-amd.html

示例:https://developers.arcgis.com/javascript/jssamples/graphics_create_circles.html

答案 1 :(得分:1)

嗯,正如我所知,你只想在esri地图上添加一定距离的圆圈。

在正在运行的示例中,在中心(21.1,52.14)上绘制一个圆圈。



var map;

      require(["esri/map", "esri/geometry/Circle", "esri/layers/GraphicsLayer","esri/graphic", "esri/units", "esri/geometry/Point", "esri/symbols/SimpleFillSymbol", "esri/symbols/SimpleLineSymbol", "esri/Color"], function(Map, Circle,GraphicsLayer, Graphic, Units, Point,SimpleFillSymbol, SimpleLineSymbol, Color) {
        map = new Map("map", {
          basemap: "topo",  
          center: [14.70, 52.53], // longitude, latitude
          zoom: 5
        });
        
       var centerPoint = new Point([21.1, 52.14]);
  var circleGeometry = new Circle({
    center: centerPoint,
    radius: 100,             // add distance
    radiusUnit: Units.MILES, // add distance unit
    geodesic: true
  });
        var gl = new GraphicsLayer({ id: "circles" });
        map.addLayer(gl);
         var sfs = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
    new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT,
    new Color([255,0,0]), 2),new Color([255,255,0,0.25])
  );
        var graphic = new Graphic(circleGeometry,sfs);
        gl.add(graphic);
      });

html, body, #map {
        height: 100%;
        margin: 0;
        padding: 0;
      }

<link rel="stylesheet" href="https://js.arcgis.com/3.16/esri/css/esri.css">
 <script src="https://js.arcgis.com/3.16/"></script>

     

   <body>
    <div id="map"></div>
  </body>
&#13;
&#13;
&#13;

希望这会对您有所帮助:)