`

解决Dojo的Widget在创建ArcGIS的Map对象时出现ID已被Registered的错误

阅读更多
今天在用Dojo的toolkit(Dijits)创建ArcGIS的地图对象时,因为有多个地图实例,而这些地图实例都被Dojo的WidgetRegister注册表管理着,而我的HTML代码中,只使用了一个Div,也就是它的ID是唯一的。这时候,如果第一次打开地图实例,是可以正常渲染的。但是打开第二个,第三个就不行了。因为ID已经被注册过了。

怎么解决呢?这得看你的需求。

 
  • 1. 如果你的地图实例是要同时打开多个,那么就得把每个地图实例的DIV ID命名做到唯一,例如添加名空间,或者其他手段。
  •  
  • 2. 如果你的地图实例每次仅打开一个,但是有很多个不同的实例。这时候可以保留一个DIV一个ID,然后通过JS代码里判断Dojo Widgets里的注册表是否已经包含了该ID,如果有,就删除掉。这样就能解决这个问题了。

  • 对于我的需求可以参看下图:我点击底部列表中某条记录的右边按钮,就弹出一个窗口,该窗口有一个地图实例。




    具体看代码:
    dijit.registry.forEach(function(w){
        if (w.get("id") == map_id+"_infowindow"){
    	w.destroy();
        }
            
        if (w.get("id") == map_id+"_zoom_slider"){
     	w.destroy();
        }
    });
    //----------------在地图实例化之前进行判断------------------------------
    map = new esri.Map(map_id,{extent:initExtent});
    


    主要是利用了 Widget 类的 getter 方法来获取ID值进行判断。
    • 大小: 212.6 KB
    1
    1
    分享到:
    评论

    相关推荐

      ArcGIS API for JavaScript 开发教程+DOJO指南+配置教程

      在ArcGIS API for JavaScript开发中,DOJO常被用来增强用户界面、管理异步操作和构建复杂的应用结构。教程会指导你如何有效地整合DOJO与ArcGIS API,例如使用DOJO的Data Stores来管理地理数据,或者利用DOJO的Widget...

      dojo create custome widget

      在压缩包中的`grammarApp`可能是一个完整的示例应用,包含了创建自定义Dojo Widget的相关代码。这个应用可能演示了如何结合Dojo的Widget机制和其他功能(如数据存储、异步请求等)来构建一个具有特定功能的应用。 ...

      基于 HTML5 的 Dojo Widget 开发

      Dojo Widget可以通过Canvas API创建动态图表,例如实时更新的数据曲线图。开发者可以通过JavaScript操作Canvas来动态绘制图表,同时利用Dojo的事件处理机制响应用户交互。 **2. 实现离线数据存储** 通过HTML5的...

      dojo widget安全通讯

      - **SandBox**:Dojo的SandBox机制创建了一个隔离的执行环境,使得Widget只能在其指定的环境中运行,限制了它们对外部环境的直接访问,从而增加了安全性。 - **dojox.secure构建小部件**:dojox是Dojo的扩展库,...

      Dojo之Widget标签开发 - 我为人人,人人为我 - BlogJava

      本文主要探讨的是在Dojo框架下进行Widget标签开发的技术细节,旨在帮助开发者更好地理解和利用Dojo构建可重用、模块化的Web组件。 首先,我们要了解什么是Widget。在Dojo中,Widget是UI组件的基础,它封装了HTML...

      arcgis dojo官网的一些小demo

      在ArcGIS平台中,Dojo是一个强大的JavaScript库,它为Web开发提供了丰富的功能,包括UI组件、数据管理、异步处理等。ArcGIS Dojo Grid是Dojo库的一部分,专门用于展示和操作表格数据,特别适合与地理信息系统(GIS)...

      widget-dojo

      **Widget的概述** Widget,又称为小工具,是一种在各种人机交互界面上提供便捷功能的应用。它结合了图像和程序,能够在手机、网页、电脑桌面等不同平台上运行,为用户提供个性化信息和服务。Widget的主要目的是简化...

      arcgis for js离线部署及dojo框架的入门

      ArcGIS for JS离线部署及Dojo框架入门 ArcGIS for JS是一个功能强大且流行的WebGIS开发框架,能够帮助开发者快速构建交互式的WebGIS应用程序。在这里,我们将讨论如何对ArcGIS for JS API进行离线部署,并介绍Dojo...

      dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程

      2. **dojo/_base**:这是Dojo的基础模块,包含了Dojo的基本功能,如对象创建、事件处理、DOM操作等。例如,`dojo/query`用于选择DOM元素,`dojo/on`用于监听事件。 3. **dojo/ready**:这个模块用于确保DOM加载完成...

      Dojo的高级运用:Widget的制作

      <<Dojo的高级运用:Widget的制作>> 和 使用Dojo和JSON构建Ajax应用>> 中涉及到的源代码 博文链接:https://tailsherry.iteye.com/blog/102907

      定义自己的dojo组件类

      每个 Dojo widget 都有一系列生命周期方法,如 `postCreate`、`startup` 和 `destroy`,它们在 widget 的创建、初始化、显示和销毁过程中被调用。理解这些方法有助于正确地管理组件的状态和资源。 ### 5. 测试 ...

      JSAPI Dojo -> Arcgis Server(SDE) -> InsertPolygon

      【标题】"JSAPI Dojo -> ArcGIS Server (SDE) -> InsertPolygon" 涉及的是使用JavaScript API for ArcGIS (Dojo) 与ArcGIS Server(SDE)进行交互,实现插入多边形图元的功能。这个主题涵盖了Web GIS开发、地理空间...

      dojo对DOM树的关于byid() pdf格式

      ### Dojo框架中的`dojo.byId()`方法:深入解析与应用 在现代Web开发中,DOM(Document Object Model)操作是构建动态网页的关键技术之一。Dojo框架,作为一款开源的JavaScript库,为开发者提供了丰富的工具集,使得...

      最棒的AJAX框架DOJO中文手册

      Dojo 提供了 dojo.xhr 对象,用于简化AJAX请求。它支持GET、POST等多种HTTP方法,并可以处理JSON、XML、HTML等各种数据格式,同时提供了异步处理机制,增强了用户体验。 ### 2. Dojo Toolkit 的核心组件 - **dojo/...

      ArcGis-for-javaScript最全中文API.pdf

      * 然后,创建一个地图对象:var map = new esri.Map("map"); * 接下来,添加一个 ArcGISTiledMapServiceLayer 到地图对象:map.addLayer(tiledMapServiceLayer); * 最后,使用 dojo.addOnLoad 函数来初始化地图对象...

      ArcGIS API for JavaScript 4.10下载

      在4.10版本中,Map对象用于定义地图内容,而View对象则负责展示地图并处理用户的交互。通过设置不同的视图类型,如2D的MapView或3D的SceneView,可以实现二维地图和三维场景的切换。 三、图层操作 API提供了多种...

      9.(arcgis api for js篇)arcgis api for js接入百度地图(有偏移).zip

      因此,当你在ArcGIS上显示百度地图时,会出现位置偏移的问题。解决这个问题的关键在于进行坐标转换。 步骤1:引入百度地图API 在你的HTML文件中,你需要引入百度地图的JavaScript库。这可以通过在head部分添加如下...

      DOJO 学习笔记 dojo

      Dojo 是一个功能丰富的 JavaScript 库,它提供了一系列模块化、面向对象的工具,用于构建高性能的 Web 应用程序。在 Dojo 中,模块和包的概念是核心组成部分,它们帮助开发者组织和管理代码,使其更易于维护和重用。...

      用于dojo学习

      Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,尤其在构建复杂的、企业级的富互联网应用程序(Rich Internet Applications, RIA)时表现突出。本压缩包"dojostudy"显然是为了帮助用户学习...

    Global site tag (gtag.js) - Google Analytics