Javascript Arcgis Esri地图:收集区域选择上的图片标记符号信息
我正在尝试创建一个地图,在这里我可以创建一个选择区域,并获取它下面所有图形指针的信息,我尝试用下面的示例进行修改,但他们使用的是web服务和查询,我希望它与json或数组一起使用 这就是我所遵循的例子Javascript Arcgis Esri地图:收集区域选择上的图片标记符号信息,javascript,json,arcgis,esri,Javascript,Json,Arcgis,Esri,我正在尝试创建一个地图,在这里我可以创建一个选择区域,并获取它下面所有图形指针的信息,我尝试用下面的示例进行修改,但他们使用的是web服务和查询,我希望它与json或数组一起使用 这就是我所遵循的例子 我想在选择后获得指针的电子邮件地址。这是一把小提琴开始。我将你的小提琴与样品结合起来,得出以下结论: 你好,加里,谢谢你的回复,你的提琴帮助了我,但它只选择了一个图形指针,我已经更新了你的提琴,你能解决这个问题吗。这也是我面临的一个有趣的问题。有人有什么想法吗?我还可以只获得一个pin而不是画布
我想在选择后获得指针的电子邮件地址。这是一把小提琴开始。我将你的小提琴与样品结合起来,得出以下结论:
你好,加里,谢谢你的回复,你的提琴帮助了我,但它只选择了一个图形指针,我已经更新了你的提琴,你能解决这个问题吗。这也是我面临的一个有趣的问题。有人有什么想法吗?我还可以只获得一个pin而不是画布中的所有pin。Danish,您正在jQuery循环中创建一个新的GraphicsLayer,这意味着您将创建三个层,每个层都有一个点。我将GraphicsLayer创建移到jQuery循环之外,现在它可以工作了。谢谢@GaryS。感谢你们的帮助和时间,我现在就把它标为答案。
var map;
var s;
var gl;
var highlightSymbol;
require([
"esri/map",
"esri/geometry/Point",
"esri/symbols/SimpleMarkerSymbol",
"esri/graphic",
"esri/layers/GraphicsLayer",
"esri/toolbars/draw",
"esri/symbols/SimpleMarkerSymbol",
"esri/InfoTemplate",
"dojo/domReady!"], function (
Map, Point, SimpleMarkerSymbol, Graphic, GraphicsLayer, Draw, SimpleMarkerSymbol, InfoTemplate) {
function initToolbar(map) {
var tb = new Draw(map);
tb.on("draw-end", findPointsInExtent);
tb.activate(Draw.EXTENT);
}
function findPointsInExtent(result) {
var extent = result.geometry;
var results = [];
require(["dojo/_base/array"], function (array) {
array.forEach(gl.graphics, function (graphic) {
if (extent.contains(graphic.geometry)) {
graphic.setSymbol(highlightSymbol);
results.push(graphic.getContent());
}
//else if point was previously highlighted, reset its symbology
else if (graphic.symbol == highlightSymbol) {
graphic.setSymbol(s);
}
});
//TODO use results as needed; here we just print to console
console.log("There are " + results.length + " results:");
console.log(results.join(""));
});
}
map = new Map("map", {
basemap: "streets",
center: [-88.21, 42.21],
zoom: 10
});
map.on("load", function () {
var content = 'email@address.com';
gl = new GraphicsLayer();
var p = new Point(-88.380801, 42.10560);
s = new SimpleMarkerSymbol().setSize(20);
var g = new Graphic(p, s, {
'title': 'Title',
'content': content
}, new InfoTemplate('${title}', '${content}'));
gl.add(g);
map.addLayer(gl);
initToolbar(this);
});
highlightSymbol = new SimpleMarkerSymbol().setColor(new dojo.Color([255,0,0]));
});