BasemapGallery<\/A>をラップするウィジェットで使い、ベースマップ変更時にマップを再中心化できます。<\/P>define([\n 'dojo\/_base\declare',\n 'dojo\/_base\lang',\n 'dojo\/dom',\n 'dojo/dom-construct',\n 'esri/domUtils',\n 'esri/dijit/BasemapGallery',\n 'dijit/_WidgetBase',\n 'dijit/_TemplatedMixin',\n '.\/_RecenterMixin',\n 'dojo/text!.\/templates/BasemapSwitcher.html'\n], function(\n declare, lang, dom, domConstruct,\n esriDomUtils, BasemapGallery,\n _WidgetBase, _TemplatedMixin,\n _RecenterMixin,\n template\n) {\n return declare([_WidgetBase, _TemplatedMixin, _RecenterMixin], {\n templateString: template,\n postCreate: function() {\n var node = dom.byId('map_root');\n esriDomUtils.hide(this.domNode);\n domConstruct.place(this.domNode, node);\n var map = this.get('map');\n this.gallery = new BasemapGallery({\n map: map,\n showArcGISBasemaps: true\n }, this.bmNode);\n this.gallery.startup();\n this.gallery.on('selection-change', lang.hitch(this, function() {\n this.recenter(); \/\/ MIXIN MAGIC\n }));\n },\n hide: function() {\n :& nbsp ;& nbsp ; esriDomUtils.hide(this.domNode); \ n & nbsp ; & nbsp ; }, \ n & nbsp ; & nbsp ; show: function() { \ n & nbsp ; & nbsp ; esriDomUtils.show(this.domNode); \ n & nbsp ; & nbsp ; } \ n }); \ n}); < / PRE > < P > < SPAN style = "font-size: 8pt ; color : #505050 ; " > < EM > このサンプルを見ると、hide/showメソッドもmixinに移して他でも再利用できそうだと感じました < / EM > < / SPAN > < / P > < P > < / P > < H2 id = "toc-hId-1015442459" id = "toc-hId-1015442459" > ちょっと待ってください < / H2 > < P > あなたはこう思うかもしれません:_WidgetBaseとmixinの違いは何ですか? 通常、mixin単体ではあまり役に立ちません。上記例では、もし単独で_RecenterMixinだけ拡張しても、操作するためのpostCreateメソッドやtemplateStringはありません。mixinは場合によってはライフサイクルメソッドにフックするために_WidgetBaseなどに依存していることもあります。本質的にはモジュール拡張であり、ウィジェットやその動作を拡張しているわけです。<\/P><\/P>