You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic GIS模型中,如何通过鼠标交互展示地图区域信息?

AnyLogic GIS矩形区域点击交互实现方案

核心思路

利用AnyLogic GIS组件自带的鼠标事件,直接绑定到矩形区域(单个GIS Shape或导入的图层面要素)上,触发信息展示逻辑。

方案1:点击矩形区域触发弹窗详情

  1. 选中目标GIS矩形:
    • 若为单个绘制的GIS Shape,直接选中组件
    • 若为导入的Shapefile图层,先勾选图层属性里的Make objects interactive
  2. 打开组件/图层的Events标签页:
    • 单个GIS Shape双击onMouseClicked事件进入代码编辑
    • GIS图层双击onObjectClicked事件进入代码编辑
  3. 编写信息展示代码:
    // 单个GIS Shape的点击逻辑
    String detail = "区域名称: " + this.name + "\n"
                  + "边界坐标:\n"
                  + "左上: (" + this.getGeometry().getMinX() + ", " + this.getGeometry().getMaxY() + ")\n"
                  + "右下: (" + this.getGeometry().getMaxX() + ", " + this.getGeometry().getMinY() + ")";
    showMessageDialog(this, detail, "区域详情", INFORMATION_MESSAGE);
    
    // GIS图层面要素的点击逻辑(通过参数获取对象属性)
    GISObject clickedObj = (GISObject)e.getSource();
    String layerDetail = "区域名称: " + clickedObj.getAttribute("name") + "\n"
                       + "中心坐标: (" + clickedObj.getGeometry().getCentroid().getX() + ", " + clickedObj.getGeometry().getCentroid().getY() + ")";
    showMessageDialog(this, layerDetail, "图层区域详情", INFORMATION_MESSAGE);
    

方案2:鼠标悬浮显示Tooltip提示

  1. 选中目标矩形或GIS图层,打开Events标签页:
    • 单个GIS Shape绑定onMouseEntered和onMouseExited事件
    • GIS图层绑定onObjectMouseEntered和onObjectMouseExited事件
  2. 编写Tooltip控制代码:
    // 鼠标进入时显示Tooltip
    showTooltip("名称: " + this.name + "\n坐标范围: " + this.getGeometry().getEnvelope(), getX(), getY() + 15);
    
    // 鼠标离开时隐藏Tooltip
    hideTooltip();
    

批量处理优化技巧

  • 如果有大量矩形区域,将所有GIS Shape存入Collection<GISShape>集合,通过循环统一绑定事件,避免重复编写代码
  • 对于GIS图层,无需逐个处理要素,直接在图层事件中统一逻辑即可,自动应用到所有可交互面要素

内容的提问来源于stack exchange,提问作者Ali Zee Shan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:53:09