CoffeeScript<\/A>, donc le code peut ne pas être le plus facile à lire.<\/P><\/P>
Alors, comment pourriez-vous accomplir quelque chose comme ça ? Voyons une solution.<\/P>
require([
"dojo\/_base\/_declare",
"esri\/map",
"dojo\/_Evented",
"dojo\/_dom",
"dojo\/_dom-geometry",
"dojo\/_dom-attr",
"dojo\/_on",
"dojo\/_query",
"esri\/geometry\/ScreenPoint",
"esri\/geometry\/screenUtils",
"esri\/symbols\/PictureMarkerSymbol",
"esri\/graphic"
], function(declare, Map, Evented, dom, domGeom, domAttr, on, query, ScreenPoint, screenUtils, PictureMarkerSymbol, Graphic) {
var cleanup = function(targets) {
targets.map(function(x) {
x.remove();
});
};
var DragDropHandler = declare([Evented], {
dragdrop: function(srcName, targetName) {
var src = dom.byId(srcName);
var target = dom.byId(targetName);
var handlers = [];
var self = this;
handlers.push(on(target, 'dragenter', function(e) {e.preventDefault();}));
handlers.push(on(target, 'dragover', function(e) {e.preventDefault();}));
handlers.push(on(target, 'dragend', function(e) {cleanup(handlers);}));
handlers.push(on(src, 'dragstart', function() {
handlers.push(on(target, 'drop', function(e) {
e.preventDefault();
cleanup(handlers);
var position = domGeom.position(e.currentTarget);
var x = e.clientX - position.x; \/\/- au cas où la carte ne prendrait pas toute la page
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; var y = e.clientY - position.y;// au cas où la carte ne prendrait pas toute la page
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; self.emit('itemdrop', {
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; bubbles: true,
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; cancelable: true,
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; dragsource: src,
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; x:x,
 .& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.& nbsp.; y:y
. & nbsp. & nbsp. & nbsp. & nbsp. & nbsp. & nbsp. & nbsp. & nbsp.; });
& nbsp. & nbsp. & nbsp. & nbsp. }));
& nbsp. & nbsp. & nbsp. & nbsp.; }));
& nbsp. & nbsp.; }
});
& nbsp.; var handler = new DragDropHandler();
& nbsp.; var map = new Map("mapView", {
& nbsp. & nbsp.; center: [-118, 34.5],
& nbsp. & nbsp.; zoom: 8,
& nbsp. & nbsp.; basemap: "topo"
& nbsp.; });
& nbsp.; function addPoint(data) {
& nbsp. & nbsp.; var mp = screenUtils.toMapGeometry(map.extent, map.width, map.height, data.pt);
& nbsp. & nbsp.; var pms = new PictureMarkerSymbol(data.url, 24, 24);
& nbsp. & nbsp.; var graphic = new Graphic(mp, pms);
& nbsp. & nbsp.; map.graphics.add(graphic);
& nbsp.; }
& nbsp.; on(query('.drag-icon'), 'mousedown', function(e) {
& nbsp. & nbsp.; var srcName = domAttr.get(e.currentTarget, 'id');
& nbsp. & nbsp.; handler.dragdrop(srcName, 'mapView');
& nbsp.; });
& nbsp.; on(handler, 'itemdrop', function(e) {
& nbsp. & nbsp.; var data = {
& nbsp. & nbsp. & nbsp.; pt: new ScreenPoint(e.x, e.y),
& nb sp . &nb sp . &nb sp . url: domAttr.get(e.dragsource, 'src')
&nb sp . };
b sp . addPoint(data);
b sp . });
b sp . }); < / PRE > < P > < / P > < P > Ce n'est pas vraiment beaucoup de code. Le cheval de bataille est vraiment le DragDropHandler< / STRONG>. Ce DragDropHandler< / STRONG> a une méthode dragdrop< / EM> qui écoute les événements de glisser sur une image et détecte quand l'image est déposée sur la carte. Lorsque cette image est déposée sur la carte, vous devez simplement émettre un événement avec les coordonnées d'écran et quel était l'élément glissé. L'ArcGIS JS API fournit quelques utilitaires pour convertir les coordonnées d'écran en géométries de carte et voila< / STRONG>< / EM>, vous pouvez rapidement ajouter des graphiques à la carte et même copier la source de l'image pour l'afficher sur la carte !< / P > < P > < A href="http : \/ \/ jsbin.com \/ muwaga \/ 1 \/ edit?js , output" rel="nofollow noopener noreferrer" target="_blank">Voici un exemple sur jsbin< / A >.< / P > < P > < / P > < P > Cet exemple ajoute simplement des graphiques à la carte, mais rien n'empêche qu'il soit appliqué à l'édition, vous pourriez donc glisser-déposer des entités pour les ajouter à un FeatureService. Alors essayez et ajoutez un peu de pazazz< / EM> à vos applications !< / P > < P > < / P > < P > Pour plus d'astuces geodev, consultez