Как я могу добавить и удалить маркер Dynami c на карте ESI javascript API? - PullRequest
0 голосов
/ 06 апреля 2020

Как добавить и удалить маркер динамического c на карте esri с помощью API javascript? Когда я добавляю маркер в графический слой, он добавляется, но как я могу удалить его и добавить новый маркер на другой долготе широты?

Пока это мой код;

require(
    ["esri/map",
    "esri/graphic",
    "esri/symbols/PictureMarkerSymbol",
    "esri/symbols/TextSymbol",
    "esri/geometry/Point",
    "esri/SpatialReference",
    "esri/tasks/ProjectParameters",
    "esri/tasks/GeometryService",
    "dojo/dom",
    "dojo/on",
    "esri/dijit/HomeButton",
    "dojo/domReady!"
    ],
    function setupmap(Map, Graphic, PictureMarkerSymbol, TextSymbol, Point, SpatialReference, ProjectParameters, GeometryService, dom, on, HomeButton) {
        var map = new Map("map-container", {
            center: [83.0179802, 25.32327],
            zoom: 13,
            basemap: "streets"
        });
        map.graphics.clear();
        map.on("load", function (evt) {
        var home = new HomeButton({map: map}, "HomeButton");
        home.startup();
        picSymbol = new PictureMarkerSymbol(iconType, 20, 20);
        $.each(detailsJSON, function (location, lstNodes) {
            var locArr = location.split("--");
            var latitude=locArr[0];
            var longitude=locArr[1];
            var geometryPoint = new Point(longitude, latitude,new SpatialReference(4326));
            map.graphics.add(new Graphic(geometryPoint, picSymbol));
        });
        });
    }
);

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Вы можете использовать Sketch Widget, который упрощает процесс добавления и обновления графики.

const sketch = new Sketch({ availableCreateTools: ['point'], layer: graphicsLayer, view, }); view.ui.add(sketch, 'top-right');

0 голосов
/ 07 апреля 2020

Вы можете сохранить ссылку на добавляемый вами объект Graphi c, а затем удалить его, используя метод remove(graphic).

let graphic = new Graphic(geometryPoint, picSymbol);
map.graphics.add(graphic);
...
map.graphics.remove(graphic);

Вы также можете удалить всю графику со слоя, используя метод removeAll().

Подробнее см. arcgis- js -api .

Чтобы сделать ваш компонент более не имеющим состояния, вы можете использовать коллекцию attributes Graphic для хранения тега (или идентификатора или подобного) и удаления элемента на основе этого значения.

При добавлении;

let graphic = new Graphic(geometryPoint, picSymbol);
graphic.attributes = { "tag": "toBeRemovedLater" };
map.graphics.add(graphic);

При удалении;

angular.forEach(map.graphics.graphics, (graphic: any) => {
   if (graphic.attributes && graphic.attributes.tag == "toBeRemovedLater")
       map.graphics.remove(graphic);
   });
...