// mjk - Enhanced Bookmark /** * Parses bookmarks from the default widget config file or * a file loaded by the user. In the case of a user created * config file set isUserCreated to true so that they behave the * same as bookmarks added at run time. **/ private function parseBookmarkConfig(config:XML, isUserCreated:Boolean):void { if(config) { var bookmarkList:XMLList = config..bookmark; var length:int = bookmarkList.length(); if(length < 1) { Alert.show("Nenhuma marcação válida encontrada!", wTemplate.widgetTitle); return; } for (var i:int = 0; i < length; i++) { // mjk- Enhanced Bookmark var comment:String = bookmarkList.@comment; var name:String = bookmarkList.@name; var extent:String = bookmarkList; var extArray:Array = extent.split(" "); var bookmark:Bookmark = new Bookmark(); //mjk - Enhanced Bookmark bookmark.comment = comment; bookmark.userCreated = isUserCreated; bookmark.name = name; bookmark.xmin = Number(extArray[0]); bookmark.ymin = Number(extArray[1]); bookmark.xmax = Number(extArray[2]); bookmark.ymax = Number(extArray[3]); bookmarkAL.addItem(bookmark); // mjk - Enhanced Bookmark // Add user created bookmarks to bookmarkSOAL if(isUserCreated) { bookmarkSOAL.addItem(bookmark); } } } } private function addBookmark():void { var name:String = txtName.text; if (name) { var ext:Extent = map.extent; var bookmark:Bookmark = new Bookmark(); bookmark.name = name; // mjk - Enhanced Bookmark bookmark.comment = txtAreaComment.text; bookmark.userCreated = true; bookmark.xmin = Number(ext.xmin.toFixed(4)); bookmark.ymin = Number(ext.ymin.toFixed(4)); bookmark.xmax = Number(ext.xmax.toFixed(4)); bookmark.ymax = Number(ext.ymax.toFixed(4)); bookmarkAL.addItem(bookmark); bookmarkSOAL.addItem(bookmark); saveBookmarks(); txtName.text = ""; // mjk - Enhanced Bookmark txtAreaComment.text = ""; bkmList.addEventListener(EffectEvent.EFFECT_END, bkmList_effectEndHandler); showBookmarksList(); } else { Alert.show(errorLabel, wTemplate.widgetTitle); } } private function bkmList_effectEndHandler(event:EffectEvent):void { bkmList.removeEventListener(EffectEvent.EFFECT_END, bkmList_effectEndHandler); // scroll to the bottom bookmarkDG.verticalScrollPosition += bookmarkDG.layout.getVerticalScrollPositionDelta(NavigationUnit.END); } private function removeBookmark(event:Event):void { var bookmark:Bookmark = ItemRenderer(event.target).data as Bookmark; bookmarkAL.removeItem(bookmark); bookmarkSOAL.removeItem(bookmark); saveBookmarks(); } private function saveBookmarks():void { if (bookmarkSO) { try { bookmarkSO.flush(); } catch (err:Error) { trace(err); } } } 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; } // mjk - Enhanced Bookmark /** * Saves user created bookmarks to a file. * The xml schema is the same as the widgets. **/ private function saveBooksMarksToFile():void { if(bookmarkSOAL) { var xml:XML = createBookmarksXML(); if(!xml) return; fileReference = new FileReference(); fileReference.save(xml, "LocaisWebSIG.txt"); } }
Solved! Go to Solution.
for(var j:int = 0; j < bookmarkAL.length; j++) { var bookmark:Bookmark = bookmarkAL.getItemAt(j) as Bookmark; result.appendChild(bookmark.toXML()); }
private function createBookmarksXML():XML { var length:int = bookmarkSOAL.length; if(length < 1) { Alert.show("There are no user defined bookmarks to export!", wTemplate.widgetTitle); return null; } var result:XML = <bookmarks></bookmarks>; result.@name = "userbookmarks"; for(var i:int = 0; i < length; i++) { var bookmark:Bookmark = bookmarkSOAL.getItemAt(i) as Bookmark; result.appendChild(bookmark.toXML()); } return result; }
private function createBookmarksXML():XML { var length:int = bookmarkSOAL.length; if(length < 1) { Alert.show("There are no user defined bookmarks to export!", wTemplate.widgetTitle); return null; } var result:XML = <bookmarks></bookmarks>; result.@name = "userbookmarks"; for(var i:int = 0; i < length; i++) { var bookmark:Bookmark = bookmarkSOAL.getItemAt(i) as Bookmark; result.appendChild(bookmark.toXML()); } for(var j:int = 0; i < bookmarkAL.length; j++) { var bookmark:Bookmark = bookmarkAL.getItemAt(j) as Bookmark; result.appendChild(bookmark.toXML()); } return result; }
And one additional thing is that always we refresh the page or reopen the application the user-defined bookmarks appear with "bug", without your name and the red "x" to delete the bookmark doesnt work. The save and e-mail bookmark doesnt work too unless we clean cookies.
Is it happening with normal bookmark widget too?
MDruzgala
for(var j:int = 0; j < bookmarkAL.length; j++) { var bookmark:Bookmark = bookmarkAL.getItemAt(j) as Bookmark; result.appendChild(bookmark.toXML()); }
Well I can't reproduce your problem...Which browser are you using? Did you try your application on another computer?
private function createBookmarksXML():XML { var length:int = bookmarkSOAL.length; /*if(length < 1) { Alert.show("Não há locais definidos pelo usuário para exportar!", wTemplate.widgetTitle); return null; }*/ // Aqui a condição foi comentada para permitir que o usuário exporte os bookmarks sem a necessidade de criar nenhum **Jecogeo var result:XML = <bookmarks></bookmarks>; result.@name = "bookmarks"; /*for(var i:int = 0; i < length; i++) { var userBookmark:Bookmark = bookmarkSOAL.getItemAt(i) as Bookmark; result.appendChild(userBookmark.toXML()); }*/ for(var j:int = 0; j < bookmarkAL.length; j++) { var preDefBookmark:Bookmark = bookmarkAL.getItemAt(j) as Bookmark; result.appendChild(preDefBookmark.toXML()); } return result; // Com a ajuda de Marcin Druzgala (Polônia) esse for foi inserido para permitir que o usuário exporte TODOS os bookmarks e não somente aqueles por ele criados **Jecogeo