【问题标题】:How to trigger a Graphic's click event?如何触发Graphic的点击事件?
【发布时间】:2018-06-18 04:19:25
【问题描述】:

我正在使用 Esri Javascript API 4.5

当地图加载时,我从外部源获取点坐标,然后使用 Graphic 类将其绘制在地图上,并将 PopupTemplate 分配给该图形。

案例

图形已成功绘制在地图上。但是为了查看弹出模板,我需要点击图形。

问题

有没有办法在图形添加到地图时触发图形的点击事件,以便弹出模板自动显示?

代码

require([    
"esri/PopupTemplate",     
"esri/Graphic",
.
.
.
.
"dojo/domReady!"
],
function (
    PopupTemplate, Graphic, ....) {

var point = {
    type: "point",
    x: <some x>,
    y: <some y>
 };    

var symbol = {
   type: "picture-marker",
   url: "/euf/assets/nl/images/red-pin.png",
   width: "30px",
   height: "30px"
};

var template = new PopupTemplate({
    title: "New Title",
    content: "New Content"
});

var graphic = new Graphic({
    geometry: point,
    symbol: symbol,
    popupTemplate: template
});
view.graphics.add(graphic); // this works as I can see the marker on page

// now, how do I trigger its click event here?
});

【问题讨论】:

  • 你不需要触发它,如果点是正确的,那么弹出模板会自动出现,这是图形的功能你在控制台中看到任何错误吗?
  • 不,我不是。仅当我单击图形时才会出现弹出窗口。
  • 换句话说,您想要以编程方式打开弹出窗口而不点击图形 - 对吗?
  • @andy 是的。这正是我所指的。
  • 另外,如果你想使用你的模板,那么在打开弹出窗口之前view.popup.content = template.content。位置相同,设置 view.popup.location 和经纬度值,以便在地图上精确定位此类弹出窗口。

标签: javascript arcgis esri arcgis-js-api


【解决方案1】:

您应该使用view.popup.open 并传递属性locationfeatures

view.popup.open({
    location: point,
    features: [graphic]
});

Example here.

【讨论】:

  • 按预期工作。但是,唯一需要注意的是在弹出窗口中使用 setTimeout。希望在将图形添加到视图时有一个回调事件。
  • @asprin 我认为这可以通过使用 view.graphics.on("change",.... 来实现。在此处查看更新的代码:jsfiddle.net/gavinr/f658k8ra
  • 不错。今天学了点儿新东西。感谢 GavinR 的投入。
  • @asprin 和 GavinR 你能帮我解决这个问题吗stackoverflow.com/questions/69630872/…。就我而言,我在地图上有多个标记,每个标记都有自己的自定义数据。
【解决方案2】:

这是我使用多边形的 infoWindow 所做的示例。

    var infoTemplate = new InfoTemplate();

    var selectedState = Graphic(geometry,highlightSymbol,attributes,infoTemplate);

    this.map.graphics.add(selectedState);
    this.map.infoWindow.setFeatures([selectedState]);
    this.map.infoWindow.show(this.map.toScreen(geometry.getExtent().getCenter()));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-27
  • 2011-01-23
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 2011-11-19
相关资源
最近更新 更多