1、GeometryService的緩衝區(Buffer)功能實現

來源:互聯網
上載者:User

標籤:style   blog   color   java   io   for   ar   cti   

1、建立地圖,並建立load的響應函數initToolbar

            map = new Map("map", {                basemap: "streets",                center: [-111.5, 39.541],                zoom: 7            });            map.on("load", initToolbar);        

2、initToolbar函數,啟用Draw對象,draw-end事件觸發時響應doBuffer函數

             function initToolbar(evtObj) {                app.tb = new Draw(evtObj.map);                app.tb.on("draw-end", doBuffer);            }    

3、dobuffer

   function doBuffer(evtObj) {                var geometry = evtObj.geometry,                map = app.map,                gsvc = app.gsvc;                switch (geometry.type) {                    case "point":                        var symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_SQUARE, 10, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 1), new Color([0, 255, 0, 0.25]));                        break;                    case "polyline":                        var symbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new Color([255, 0, 0]), 1);                        break;                    case "polygon":                        var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_NONE, new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT, new Color([255, 0, 0]), 2), new Color([255, 255, 0, 0.25]));                        break;                }                var graphic = new Graphic(geometry, symbol);                map.graphics.add(graphic);                //setup the buffer parameters                var params = new BufferParameters();                params.distances = [dom.byId("distance").value];                params.bufferSpatialReference = new esri.SpatialReference({ wkid: dom.byId("bufferSpatialReference").value });                params.outSpatialReference = map.spatialReference;                params.unit = GeometryService[dom.byId("unit").value];                if (geometry.type === "polygon") {                    //if geometry is a polygon then simplify polygon.  This will make the user drawn polygon topologically correct.                    gsvc.simplify([geometry], function (geometries) {                        params.geometries = geometries;                        gsvc.buffer(params, showBuffer);                    });                } else {                    params.geometries = [geometry];                    gsvc.buffer(params, showBuffer);                }            }            function showBuffer(bufferedGeometries) {                var symbol = new SimpleFillSymbol(                  SimpleFillSymbol.STYLE_SOLID,                  new SimpleLineSymbol(                    SimpleLineSymbol.STYLE_SOLID,                    new Color([255, 0, 0, 0.65]), 2                  ),                  new Color([255, 0, 0, 0.35])                );                array.forEach(bufferedGeometries, function (geometry) {                    var graphic = new Graphic(geometry, symbol);                    app.map.graphics.add(graphic);                });                app.tb.deactivate();                app.map.showZoomSlider();            }

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.