Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何像这样初始化jQuery小部件:var newMap=xgis.map(';#map';,options);_Javascript_Jquery_Jquery Ui_Openlayers_Gis - Fatal编程技术网

Javascript 如何像这样初始化jQuery小部件:var newMap=xgis.map(';#map';,options);

Javascript 如何像这样初始化jQuery小部件:var newMap=xgis.map(';#map';,options);,javascript,jquery,jquery-ui,openlayers,gis,Javascript,Jquery,Jquery Ui,Openlayers,Gis,也许这个问题已经发布在这里了,但是我搜索了一下,没有找到我想要的详细案例 我有在OpenLayers上运行的GIS API。我有一个名为“xgis”的jQuery小部件,用于创建OpenLayers地图 小部件的定义如下: $.widget('xgis.xgis', { options: { opt1: true, opt2: [], opt3: '' }, method1: function() { ...

也许这个问题已经发布在这里了,但是我搜索了一下,没有找到我想要的详细案例

我有在OpenLayers上运行的GIS API。我有一个名为“xgis”的jQuery小部件,用于创建OpenLayers地图

小部件的定义如下:

$.widget('xgis.xgis', {
    options: {
        opt1: true,
        opt2: [],
        opt3: ''
    },
    method1: function() {
        ...
    },
    method2 ...,
    ...
});
var newMap = xgis.map('#map', options);
当我想要创建地图时,我只需执行以下操作:

var newMap = $('#map').xgis(options);
其中“#map”是放置映射的DIV的ID,“options”是包含映射初始化选项的对象

现在,让我们解释一下我想要什么。我想更改GIS API的整个类结构。我想上这样的课: *xgis(主类) *xgis.map(地图类) *xgis.layer(图层类) 等

除了小部件,它正在工作。我想像这样初始化地图:

$.widget('xgis.xgis', {
    options: {
        opt1: true,
        opt2: [],
        opt3: ''
    },
    method1: function() {
        ...
    },
    method2 ...,
    ...
});
var newMap = xgis.map('#map', options);
如您所见,我需要一种初始化映射的简单方法,从而稍微隐藏了它是jQuery.ui小部件的事实

有没有可能改变小部件的结构,以使这种新的初始化方式工作


谢谢

我不认为你可以直接用
$.widget
来做。但你可以把它藏起来。使用普通API创建小部件,名称如
xgis\u map
xgis\u layer
等,然后编写一个包装器:

var xgis = {
    map: function(selector, options) {
        return $(selector).xgis_map(options);
    },
    layer: function(selector, options) {
        return $(selector).xgis_layer(options);
    },
    ...
};

非常感谢您@Barmar。这很容易,但我没有想到这正是我想要的。谢谢