如何访问插件外部的对象?

时间:2016-07-06 09:48:59

标签: javascript jquery jquery-plugins

我正在尝试编写一个jQuery插件,我需要在初始化地图后添加或删除标记。

代码看起来像

(function($, window, document) {


    "use strict";
    var pluginName = "MapPlugin"
    var defaults = {
                zoom : 10,
                coords : [48.895651, 2.290569],
                type : "ROADMAP",
                debug : false,
                langage : "english",
                overviewMapControl: false,
                streetViewControl: false,
                scrollwheel: false,
                mapTypeControl: false,
            };

    function MapPlugin( element, options ) {
        this.element = element
        this.settings = $.extend( {}, defaults, options );
        this._name = pluginName;


        switch( this.settings.type ) {
            case 'ROADMAP':
            case 'SATELLITE':
            case 'HYBRID':
            case 'TERRAIN':
                ...
            default:
                this.settings.type = google.maps.MapTypeId.ROADMAP;
                break;
        }
        this.init();
    }

    // Avoid MapPlugin.prototype conflicts
    $.extend( MapPlugin.prototype, {
        init: function() {

            var map = new google.maps.Map( this.element , {
                zoom: this.settings.zoom,
                center: new google.maps.LatLng(..., ...),
                ...

            });
            $(this).data('googleMap', map);
        }
    });
    $.fn[ pluginName ] = function( options ) {
        return this.each( function() {
            if ( !$.data( this, "plugin_" + pluginName ) ) {
                $.data( this, "plugin_" + pluginName, new MapPlugin( this, options ) );
            }
        } );
    };

})(jQuery, window, document);

从我的JavaScript中我称之为

map.MapPlugin({
            zoom: 10, // Initial zoom level (optional)
            coords: [48.895651, 2.290569], // Map center (optional)
            type: "ROADMAP" // Map type (optional)
        });

由于页面上可以有多个地图,所以我没有返回MapPlugin的实例。但是现在如果我想调用任何Plugin方法,我需要一些如何访问实例。

但不知道如何访问实例。有什么想法吗?

0 个答案:

没有答案