怎么拿到ol.interaction.draw

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么拿到ol.interaction.draw相关的知识,希望对你有一定的参考价值。

参考技术A 什么是OpenLayers?
OpenLayers 是一个专为Web GIS 客户端开发提供的javascript 类库包,用于实现标准格式发布的地图数据访问。从OpenLayers2.2版本以后,OpenLayers已经将所用到的Prototype.js组件 整合到了自身当中,并不断在Prototype.js的基础上完善面向对象的开发,Rico用到地方不多,只是在OpenLayers.Popup.AnchoredBubble类中圆角化DIV。
我眼里的Openlayer:
说到openlayer不得不说其中的map,map是OpenLayers的核心组件,如果把开发openlayer3过程比做画画的话,那么map就是一个神奇的桌子,它是来承载各式各样的纸(layer),画画的背景想用地图做背景怎么办?这个时候ol.layer.Tile出来了,想加载网格中加载块状地图,非它莫属,想加载客户数据怎么办?ol.layer.Vector帮助你,好了背景图有了,自己画的也加上了,突然发现对背景跟自己画的有点不满意,想自己添加,修改怎么办,给map加上特效,ol.interaction.xxxx,想要画点你就加ol,interaction.Draw,想修改你就加上ol.interaction.Modify,当然在加特效之前你可以对地图做一些渲染,ol.FeatureOverlayer,因为默认的样式画出来的东西不一定会看的清。当然事实上远没有这没简单,每个类都有自己的方法。就说map吧,至少我用到最多的是它的on()跟once()方法,前者监听一种特定类型的事件,后者监听一次特定类型的事件,其中on()跟un()是配对使用的。其他的就不多说了,可以参考一下官方手册。
一些常用的例子
首先从Map的官方参考手册看起本回答被提问者采纳

WPF DataGrid 没有行的概念吗?怎么能拿到选中行的索引? DataGrid.SelectedIndex 返回的值是-1,要怎么拿?

WPF DataGrid 没有行的概念吗?怎么能拿到选中行的索引? DataGrid.SelectedIndex 返回的值是-1 没有拿到,要怎么才能拿到啊??
小的,没分,对不住各位了..

我帮你写了一段代码,你试试

// dg = dataGrid

var index = dg.SelectedIndex;

if (index == -1) // 判断是否选中了某一行

    if (dg.SelectedCells.Count > 0)
    
        // 获取综合信息,包括行、列索引
        // DataGridRow 对象
        // DataGridCell 数据模板中的首元素
        // 获取绑定到 DataGridRow 上的数据对象
        var infos = dg.SelectedCells.Select(s => new
        
            ColumnIndex = s.Column.DisplayIndex,
            RowIndex = dg.Items.IndexOf(s.Item),
            DataItem = s.Item, // 该行所绑定的数据对象
            // 根据 s.Item 获取 DataGridRow
            DataGridRow = dg.ItemContainerGenerator.ContainerFromItem(s.Item),
            // 根据 s.Item 获取单元格模板的首个元素
            VisulRoot = s.Column.GetCellContent(s.Item),
        );

        foreach (var info in infos)
        
            Console.WriteLine("0: (1,2)",
                info.VisulRoot, info.RowIndex, info.ColumnIndex);
        
    

    // 获取 DataGridRow 绑定的数据对象
    var items = dg.SelectedCells.Select(s => s.Item).Distinct();

else

    /* SelectedIndex != -1 */

参考技术A 我的测试结果是这样的:
SelectedIndex——在SelectedCellsChanged事件中,如果SelectionUnit是FullRow,则这个值返回的就是当前击中的行号,如果SelectionUnit是Cell或CellOrRowHeader则点击时总是返回-1。要是在CurrentCellChanged事件中取得这个值,如果SelectionUnit是FullRow,则每次取得的都是上一次选中行的行索引值,第一次点击一行则返回-1(CurrentCellChanged在SelectedCellsChanged前触发),如果SelectionUnit是Cell或CellOrRowHeader则点击时总是返回-1。参照前面答友,当SelectIndex取值不对时,可以用DataGrid1.Items.IndexOf(DataGrid1.CurrentItem)取得击中的行号。
感觉这应该是是个坑吧,或者理解的不到位。
参考技术B 肯定是有行的,是不是操作不对,贴一下代码看一下,或者你试试SelectedItem,或者说明一下具体需求,希望对你有帮助追问

private void dgCGGoods_KeyUp(object sender, KeyEventArgs e)

if ((int)e.Key == 3)
e.Handled = true;
int i = dgCGGoods.SelectedIndex;
按Tab键时进来

追答

DataGrid的KeyUP事件中针对Tab,Enter按键有一些限制,SeledtedIndex返回值为-1说明没有选中,你其实就是想取得当前选中行的索引值吧,为什么不用SelectionChanged事件呢?另外,WPF不是WinForm,基本不需要这样的操作,要不你描述一下需求,看看能不能用其它比较合适的方式解决

以上是关于怎么拿到ol.interaction.draw的主要内容,如果未能解决你的问题,请参考以下文章

拿到这份Java面试文档“狂刷”3周,成功拿到京东的offer

cropper怎么拿到裁剪后的路径

springmvc 怎么拿到requestbody

[react] react怎么拿到组件对应的DOM元素?

WPF DataGrid 没有行的概念吗?怎么能拿到选中行的索引? DataGrid.SelectedIndex 返回的值是-1,要怎么拿?

Javaweb中怎么快速找到项目中对应的token,拿到认证钥匙??