zoukankan      html  css  js  c++  java
  • ArcGIS API for JavaScript 4.2学习笔记[18] 搜索小部件

    这个例子很简单,作为开学后(暴露出学生党的本质)的开胃菜是再合适不过了。

    不过,博主提前警告一下:接下来的例子会相当的长、烦、难。我还会用“引用”-“函数参数骨架”-“逐级分解代码”的模式,从上往下解读一些更难的AJS代码。

    现在上课!


    空间查询,是GIS的一个重头戏,除了基础定义(坐标系统、投影、符号等)、数据准备外,紧接着就是空间查询和下一章的空间分析。

    对于AJS的小部件,我们已经接触了两个了,如2D地图中的指北针和上一章的弹窗(Popup)。这个例子也是小部件的应用,名为:“Search”。

    本例是最普通的空间查询,即在3D地图中搜索地物。

    举例:

    在搜索小部件中输入上海,结果就会以goTo()动画跳转到搜索结果中。

    给出引用

    require(
        [
          "esri/Map",
          "esri/views/SceneView",
          "esri/widgets/Search",
          "dojo/domReady!"
        ], 
        function(Map, SceneView, Search) {
        }
    );

    可以看到,使用了widgets/Search引用。

    函数参数骨架

    function(Map, SceneView, Search){
        var map = Map({...});
        var view = SceneView({...});
        var searchWidget = new Search({...});
        view.ui.add(searchWidget, {...});
    }

    是不是很简单?

    在常规的map和view实例化后,实例化一个Search对象,名为searchWidget,然后在view.ui属性中添加即可,空间搜索原来这么容易?

    我们展开Search({...})和add()中的内容。

    var searchWidget = new Search({
        view: view
    });
    
    view.ui.add(searchWidget, {
        position: "top-left",
        index: 0
    });

    要不要太简单?

    Search()中是把view属性绑定到上方的view对象,add()中是确定搜索小部件的位置信息。

    于是这个例子就完了。


    查阅API:

    Search是个类,继承自Accessor类。

    它提供了为地图搜索地物的功能,对于要素图层,用空间查询更佳。

    它显示为:

    它的属性和方法很多,列举几个:

    属性:view、popupTemplate、sources、viewModel、container,等等。

    方法:on()、search()、clear()、destroy(),等等。

    可以看出,Search类支持定义弹窗模板。

    view.ui

    ui是DefaultUI类的属性,在MapView的帮助文档中,查阅得到常用的方法是:

    add()、remove()、move()、empty()。

    而DefaultUI类继承自UI类,UI类继承自Accessor类。

    add()方法接受两个参数,前一个参数是html元素(组),这里是searchWidget;后一个参数是小部件的位置,有两个可选参数:position和index。

  • 相关阅读:
    oracle数据表批量插入查询到的数据
    Eclipse EXCEPTION_ACCESS_VIOLATION 崩溃解决办法
    js获取当前URL、主机端口、网络协议、请求参数
    java.util.ConcurrentModificationException异常分析
    Java跨平台调接口同时更新同一条数据发生阻塞
    centos7+mariadb+防火墙,允许远程
    centos7安装JDK
    centos7安装python3
    VMware 中安装KVM,模块不加载
    C++程序结构.1
  • 原文地址:https://www.cnblogs.com/onsummer/p/6421297.html
Copyright © 2011-2022 走看看