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

MapsUI中Polygon阻断MapClicked事件,如何取消多边形点击拦截?

MapsUI Polygon点击事件拦截问题解决方案

方案1:关闭图层级命中测试(最推荐,无需修改原有点击逻辑)

如果你的整个图层所有Polygon都不需要响应任何交互,直接给图层添加IsHitTestVisible = false配置即可,该配置会让整个图层跳过命中测试,完全不会阻断地图的MapClicked事件:

myLayer = new Layer() 
{ 
    IsMapInfoLayer = false,
    IsHitTestVisible = false,
    // 其余原有图层配置
};

配置后点击Polygon区域会直接触发地图的MapClicked事件,你可以在原有事件处理程序中正常获取点击位置的经纬度坐标。

方案2:在图层Info事件中直接获取经纬度

如果你需要保留图层的命中测试能力(比如部分要素需要响应点击),可以直接从图层Info事件的参数中获取点击位置的世界坐标(即经纬度),不需要做事件路由:

myLayer.Info += (sender, e) =>
{
    // e.WorldPosition即为点击位置的经纬度坐标,X对应经度,Y对应纬度
    double longitude = e.WorldPosition.X;
    double latitude = e.WorldPosition.Y;
    // 直接调用原有地图点击逻辑即可
    YourOriginalClickLogic(longitude, latitude);
};

方案3:单样式/单要素关闭命中测试

如果同一个图层下只有部分Polygon不需要拦截点击,可以在对应Polygon的矢量样式中设置IsHitTestVisible = false,粒度更灵活:

var polygonStyle = new VectorStyle
{
    Fill = new Brush(Color.FromRgba(0, 0, 255, 128)),
    Outline = new Pen(Color.Black, 2),
    IsHitTestVisible = false // 仅应用该样式的Polygon不会拦截点击
};
// 给不需要拦截点击的Polygon设置该样式即可

内容的提问来源于stack exchange,提问作者JoeTaicoon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:45:04