<?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>
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.