<?xml version="1.0" encoding="utf-8"?> <!-- //////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2010 ESRI // // All rights reserved under the copyright laws of the United States. // You may freely redistribute and use this software, with or // without modification, provided you include the original copyright // and use restrictions. See use restrictions in the file: // <install location>/License.txt // //////////////////////////////////////////////////////////////////////////////// --> <viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:viewer="com.esri.viewer.*" xmlns:Bookmark="widgets.Bookmark.*" x="600" y="300" layout="absolute" widgetConfigLoaded="init()"> <viewer:states> <s:State name="bkmList"/> </viewer:states> <fx:Script> <![CDATA[ import com.esri.ags.geometry.Extent; import mx.collections.ArrayList; import mx.controls.Alert; import mx.events.EffectEvent; import spark.components.supportClasses.ItemRenderer; import spark.core.NavigationUnit; private const BOOKMARKS:String = "bookmarks"; private const ICON_URL:String = "assets/images/"; //labels private var bookmarksLabel:String; private var addbookmarksLabel:String; [Bindable] private var addLabel:String; [Bindable] private var submitLabel:String; private var errorLabel:String; [Bindable] private var bookmarkAL:ArrayList; // used by BookmarkDataGroup private var bookmarkSO:SharedObject; private var bookmarkSOAL:ArrayList; // stored in bookmarkSO private var selectedindex:int = 0; private function init():void { if (configXML) { //labels bookmarksLabel = configXML.labels.bookmarkslabel || getDefaultString("bookmarksLabel"); addbookmarksLabel = configXML.labels.addbookmarkslabel || getDefaultString("addbookmarksLabel"); addLabel = configXML.labels.addlabel || getDefaultString("addLabel"); submitLabel = configXML.labels.submitlabel || getDefaultString("bookmarkSubmitLabel"); errorLabel = configXML.labels.errorlabel || getDefaultString("errorLabel"); } wTemplate.addTitlebarButton(ICON_URL + "i_bookmark.png", bookmarksLabel, showBookmarksList); bookmarkAL = new ArrayList(); try { bookmarkSO = SharedObject.getLocal(BOOKMARKS); } catch (err:Error) { trace(err); } loadBookmarks(); } private function showBookmarksList():void { this.currentState = "bkmList"; wTemplate.selectedTitlebarButtonIndex = 0; // used to indicate selected titlebar button when automatically switching state } private function loadBookmarks():void { if (configXML) { var bookmarkList:XMLList = configXML..bookmark; for (var i:int = 0; i < bookmarkList.length(); i++) { var name:String = bookmarkList.@name; var icon:String = bookmarkList.@icon; var extent:String = bookmarkList; var extArray:Array = extent.split(" "); var bookmark:Bookmark = new Bookmark(); bookmark.name = name; bookmark.icon = icon; bookmark.xmin = Number(extArray[0]); bookmark.ymin = Number(extArray[1]); bookmark.xmax = Number(extArray[2]); bookmark.ymax = Number(extArray[3]); bookmarkAL.addItem(bookmark); } } if (bookmarkSO) { bookmarkSOAL = bookmarkSO.data[BOOKMARKS] as ArrayList; if (!bookmarkSOAL) { bookmarkSOAL = new ArrayList(); bookmarkSO.data[BOOKMARKS] = bookmarkSOAL; } else { bookmarkAL.addAll(bookmarkSOAL); } } } private function showBookmark(event:Event):void { var bookmark:Bookmark = ItemRenderer(event.target).data as Bookmark; var ext:Extent = new Extent(bookmark.xmin, bookmark.ymin, bookmark.xmax, bookmark.ymax); map.extent = ext; } ]]> </fx:Script> <viewer:WidgetTemplate id="wTemplate" width="300" height="300"> <s:Group id="bkmList" width="100%" height="100%" visible="false" visible.bkmList="true"> <s:Scroller width="100%" height="100%"> <Bookmark:BookmarkDataGroup id="bookmarkDG" bookmarkClick="showBookmark(event)" dataProvider="{bookmarkAL}"> <Bookmark:layout> <s:VerticalLayout gap="2" horizontalAlign="justify" useVirtualLayout="true"/> </Bookmark:layout> </Bookmark:BookmarkDataGroup> </s:Scroller> </s:Group> </viewer:WidgetTemplate> </viewer:BaseWidget>
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.