<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7164397541573936868</id><updated>2025-12-25T13:33:41.282+01:00</updated><category term="gis"/><title type='text'>The Balloon Project</title><subtitle type='html'>The Balloon project blog is a place to talk about my personal virtual globe project so called &quot;Balloon Project&quot;.&#xa;Initially it was born using my own developed 3D API allowing to load, render and animate GIS information, georeference images, import lat/lon shapefiles and load layers from any WMS server.&#xa;The future project will be based (I hope it) in WWJ. WWJ is still in an early alpha stage, because it, I try to contribute with some features I learn or implement working in my own 3D API.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-884611647344660120</id><published>2009-04-09T20:09:00.001+02:00</published><updated>2009-04-09T20:09:31.579+02:00</updated><title type='text'>New domain !!!</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;I have changed to the new domain: &lt;a href=&quot;http://acuriousanimal.orggeo.net&quot;&gt;http://acuriousanimal.orggeo.net&lt;/a&gt;. I hope to have some time to move some post to the new site.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/884611647344660120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/884611647344660120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/884611647344660120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/884611647344660120'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2009/04/new-domain.html' title='New domain !!!'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-9170163939749738186</id><published>2009-01-24T14:52:00.015+01:00</published><updated>2009-01-25T18:18:41.761+01:00</updated><title type='text'>SwingAnnotations on WWJ</title><content type='html'>Thanks to Arnaud Saval, who helps me with the problems commented in my &lt;a href=&quot;http://theballoonproject.blogspot.com/2008/11/annotation-on-jwindow.html&quot;&gt;previous post&lt;/a&gt;, here is the new version of AnnotationWindow which I called more rightly SwingAnnotation.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/GJSCwGfNBHg&amp;amp;hl=es&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/GJSCwGfNBHg&amp;amp;hl=es&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;There are two important requirements you need to know before start using SwingAnnotation:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;You need JDK6u12&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt; (which currently is in early access). &lt;/span&gt;JDK6u12 solves the problem between heavyweight and lighweight component, this way we can put JPanel on top of a Canvas component without problems.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The container on which the WWJ Canvas resides must use a null layout:&lt;p&gt;&lt;/p&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;...&lt;br /&gt;      wwd = new WorldWindowGLCanvas();&lt;br /&gt;      wwd.setSize(new java.awt.Dimension(600, 500));&lt;br /&gt;&lt;br /&gt;      this.getContentPane().setLayout(null);&lt;br /&gt;      this.getContentPane().add(wwd);&lt;br /&gt;...&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;SwingAnnotations are implemented using a JPanel on which you put the desired content panel. Given a geoposition it takes care to compute the corresponding screen position and set the panel location to the appropriate site.&lt;br /&gt;The JPanel of the SwingAnnotations share the same container as the WWJ canvas. This is the reason you need to set the layout to null, to allow place the panels at any location.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZFjXTng6frt9H6dK6EN2S7tI0GjID-ot-z1lI2qzO5s_5dBSuKvq2N2Mh_Ir4HkmatLWZTh-dbVmnRuK1vgZs3tDdnD70b7nJfv4PwTz-eUe44EwvCjsWKylQAxc6gszNt6h8Hm4962g/s1600-h/anotwin2.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 253px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZFjXTng6frt9H6dK6EN2S7tI0GjID-ot-z1lI2qzO5s_5dBSuKvq2N2Mh_Ir4HkmatLWZTh-dbVmnRuK1vgZs3tDdnD70b7nJfv4PwTz-eUe44EwvCjsWKylQAxc6gszNt6h8Hm4962g/s320/anotwin2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5294825733351897058&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73Z7pYRFJm370AYgybaWfzC4R1-KozUBx2hRkS-J6nTb8y6yIjWrhnCx89Xh2We4N5Q7-_qUnhAz0IBEK_CMRAj09_2W25NndwQy4eZ7ltg5uZGobebeR1NAuX5Sr6YM_7BfGYQ4eDD8/s1600-h/anotwin3.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 253px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73Z7pYRFJm370AYgybaWfzC4R1-KozUBx2hRkS-J6nTb8y6yIjWrhnCx89Xh2We4N5Q7-_qUnhAz0IBEK_CMRAj09_2W25NndwQy4eZ7ltg5uZGobebeR1NAuX5Sr6YM_7BfGYQ4eDD8/s320/anotwin3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5294825733539370658&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the source code &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Swing_Annotation_01.zip&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/9170163939749738186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/9170163939749738186' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/9170163939749738186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/9170163939749738186'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2009/01/swingannotations-on-wwj.html' title='SwingAnnotations on WWJ'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZFjXTng6frt9H6dK6EN2S7tI0GjID-ot-z1lI2qzO5s_5dBSuKvq2N2Mh_Ir4HkmatLWZTh-dbVmnRuK1vgZs3tDdnD70b7nJfv4PwTz-eUe44EwvCjsWKylQAxc6gszNt6h8Hm4962g/s72-c/anotwin2.png" height="72" width="72"/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-8203102699346459445</id><published>2008-11-30T13:37:00.003+01:00</published><updated>2008-11-30T13:50:34.784+01:00</updated><title type='text'>Annotation on a JWindow</title><content type='html'>Hi all, too much time without put a post in this blog but time is something I haven&#39;t lately.&lt;br /&gt;&lt;br /&gt;After a couple of days sick with the flu :( today I have a while and spent it looking to a peace of code I had for WWJ.&lt;br /&gt;The idea is making use of JWindow to create annotate windows and have all the power of Swing to create annotations (buttons, text fields, etc).&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-EFRAcaISY0Te-u-D7R2fV_lgYV8QRR6eXR2OReZtRofbiuq8pm4jCRVJqtyrQz2HFc-LbGWXuNawfnIIyiyjBOSYwCUQ2x1LhRhZqfar39ZSG_u0zLbpXIShsy_S_Qilmm7EVhpVQq0/s1600-h/annotwindows.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 224px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-EFRAcaISY0Te-u-D7R2fV_lgYV8QRR6eXR2OReZtRofbiuq8pm4jCRVJqtyrQz2HFc-LbGWXuNawfnIIyiyjBOSYwCUQ2x1LhRhZqfar39ZSG_u0zLbpXIShsy_S_Qilmm7EVhpVQq0/s320/annotwindows.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5274432067561606098&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unfortunatelly, there are some issues that needs to be solved.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Behaviour is different on Linux than Windows. In Linux (using GNOME) the annotation windows remains visible when the main frame becomes hidden. On the other hand, for Windows (Vista) it works fine.&lt;/li&gt;&lt;li&gt;Focus. When you put an annotatin window with a text field it doesn&#39;t get the focus to write text.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Well, if any of you have time to solve these and, probably, other errors I appreciate a lot you send me (or publish) the code too.&lt;br /&gt;&lt;br /&gt;You can get the annotation windows related code &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Annotation_Window_01.zip&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/8203102699346459445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/8203102699346459445' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8203102699346459445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8203102699346459445'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/11/annotation-on-jwindow.html' title='Annotation on a JWindow'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-EFRAcaISY0Te-u-D7R2fV_lgYV8QRR6eXR2OReZtRofbiuq8pm4jCRVJqtyrQz2HFc-LbGWXuNawfnIIyiyjBOSYwCUQ2x1LhRhZqfar39ZSG_u0zLbpXIShsy_S_Qilmm7EVhpVQq0/s72-c/annotwindows.jpg" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-2204472762267486514</id><published>2008-08-31T17:53:00.003+02:00</published><updated>2008-08-31T18:01:29.184+02:00</updated><title type='text'>Selecting Prism objects</title><content type='html'>It gives courage discover there are people that can get benefit from your bits of work.&lt;br /&gt;&lt;br /&gt;Thanks to Turbo, who is using my &lt;a href=&quot;http://theballoonproject.blogspot.com/2008/06/prism-themathic-maps-on-wwj.html&quot;&gt;Prism objects&lt;/a&gt;, in his project about the need of allow selection on Prism. Now you can add a set of Prism to a RenderableLayer and use the selection mechanism to now which prism is selected.&lt;br /&gt;&lt;br /&gt;The issue is when you are in &quot;selection mode&quot; you can interact with the globe. To avoid this &quot;problem&quot; you need to set the &#39;setPickEnable&#39; to false in the RenderableLayer where you put the Prisms.&lt;br /&gt;&lt;br /&gt;The new code and example can be found &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Prism_Objects_02.zip&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/2204472762267486514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/2204472762267486514' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2204472762267486514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2204472762267486514'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/08/selecting-prism-objects.html' title='Selecting Prism objects'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-2390343161671822277</id><published>2008-07-19T18:32:00.003+02:00</published><updated>2008-07-19T18:35:33.417+02:00</updated><title type='text'>Prism objects on Balloon</title><content type='html'>Today I have dedicated a couple of hours to integrate my funny Prism objects into Balloon.&lt;br /&gt;Given a shapefile, all Polygon objects are read and rendered as Prisms.&lt;br /&gt;Here is the result:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPbknJbPlApNyAW1fZiW4tM1wCLccpCG1Kfs0sTBxyqUJnkK9QojS1cn81rdyU_6cV-jbe6459Xwsa8-jUA9bF_q9x0qxUEWaZBL4F_YqUYZ-XaCGpFBFq4x2nq7hTfmGDtElpY1804A/s1600-h/balloon_prism.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPbknJbPlApNyAW1fZiW4tM1wCLccpCG1Kfs0sTBxyqUJnkK9QojS1cn81rdyU_6cV-jbe6459Xwsa8-jUA9bF_q9x0qxUEWaZBL4F_YqUYZ-XaCGpFBFq4x2nq7hTfmGDtElpY1804A/s400/balloon_prism.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5224764391834298706&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/2390343161671822277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/2390343161671822277' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2390343161671822277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2390343161671822277'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/07/prism-object-on-balloon.html' title='Prism objects on Balloon'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPbknJbPlApNyAW1fZiW4tM1wCLccpCG1Kfs0sTBxyqUJnkK9QojS1cn81rdyU_6cV-jbe6459Xwsa8-jUA9bF_q9x0qxUEWaZBL4F_YqUYZ-XaCGpFBFq4x2nq7hTfmGDtElpY1804A/s72-c/balloon_prism.jpg" height="72" width="72"/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-9027792884083398455</id><published>2008-07-18T20:14:00.002+02:00</published><updated>2008-07-18T20:17:45.739+02:00</updated><title type='text'>Using Polyline for shapefiles</title><content type='html'>I just tested the use of Polyline to render polygons and lines (from a shapefile) into WWJ, to achieve to power of &quot;follow terrain&quot; property.&lt;br /&gt;Unfortunately it is very slow, at least in my ancient laptop.&lt;br /&gt;&lt;br /&gt;Another solution I test is the use of SurfacePolygon to render the shapefile polygon elements. It have a good performance but you lost precision transforming vectorial data into a bitmap.&lt;br /&gt;&lt;br /&gt;Depending on your needs you can chose between the two options.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/9027792884083398455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/9027792884083398455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/9027792884083398455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/9027792884083398455'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/07/using-polyline-for-shapefiles.html' title='Using Polyline for shapefiles'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-2638411920726779763</id><published>2008-07-16T21:46:00.003+02:00</published><updated>2008-07-16T21:53:49.288+02:00</updated><title type='text'>Basic shapefile support on Balloon</title><content type='html'>Some time ago I have created a set of classes, using OpenGL primitives, to render efficiently shapefiles in WWJ.&lt;br /&gt;Now, I have spend some time integrating it into Balloon. Here is the result:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiLYcvwKUrOfl4qQ90K5auqn85CcPnC1O2XbpcyhDiRjJ9NJJwZyAhJOWhdKqaHku1L1VjIvhQTwMo83Zy3Kq_ji_SFZRY6jj5U-Kla3FzIkcZucoakI1tThABvsBuR6pL9Z6XJK_Lxy4/s1600-h/balloon_shapefile.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiLYcvwKUrOfl4qQ90K5auqn85CcPnC1O2XbpcyhDiRjJ9NJJwZyAhJOWhdKqaHku1L1VjIvhQTwMo83Zy3Kq_ji_SFZRY6jj5U-Kla3FzIkcZucoakI1tThABvsBuR6pL9Z6XJK_Lxy4/s400/balloon_shapefile.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5223701380396447762&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The classes has veru good performance but has some important limitation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; First, it must be used with vertical exaggeration set to zero, that is, no relieve (and it is not much usefull a virtual globe without relive).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Second, there are no filled polygons, polygons are rendered has line loops.&lt;/li&gt;&lt;/ul&gt;I have made some test using Polyline for lines and SurfacePolygon for polygons but I need more time to test its performance with great amounts of data and integrate it into Balloon.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/2638411920726779763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/2638411920726779763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2638411920726779763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2638411920726779763'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/07/basic-shapefile-support-on-balloon.html' title='Basic shapefile support on Balloon'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiLYcvwKUrOfl4qQ90K5auqn85CcPnC1O2XbpcyhDiRjJ9NJJwZyAhJOWhdKqaHku1L1VjIvhQTwMo83Zy3Kq_ji_SFZRY6jj5U-Kla3FzIkcZucoakI1tThABvsBuR6pL9Z6XJK_Lxy4/s72-c/balloon_shapefile.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-2448362946229904969</id><published>2008-06-05T20:21:00.000+02:00</published><updated>2008-06-05T20:21:01.192+02:00</updated><title type='text'>Prism (themathic) maps on WWJ</title><content type='html'>This is the first implementation of prism objects for WWJ.&lt;br /&gt;Also, I have build a data file with world limits (extracted from a shapefile) and prepared an example application.&lt;br /&gt;The example is far away to become a thematic application like &lt;a href=&quot;http://www.uuorld.com&quot;&gt;UUorld&lt;/a&gt; but a second prism object version could have more improvement and utilities, like show text on top of prism.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGxrSyFPkXlZv5_Iqre9dd45yDANETQnEfkOgW_MDorz3lHAE1KxaTRMdqxWaZlpKcQQbX8tAOQCN1YBOn73jxAPrvuzhD4LuKuIopqmQBL55bqoGJ0FeRwVMjU8CSWrTc7fpAco7GbE/s1600-h/prism01_example.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGxrSyFPkXlZv5_Iqre9dd45yDANETQnEfkOgW_MDorz3lHAE1KxaTRMdqxWaZlpKcQQbX8tAOQCN1YBOn73jxAPrvuzhD4LuKuIopqmQBL55bqoGJ0FeRwVMjU8CSWrTc7fpAco7GbE/s400/prism01_example.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5208082521555625762&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNFEXyVegLsUyrnCZmJVwPvXcBg-2zWCAR6GhlNWrHCPavTtXwAuvtIGQY7-aA-MuVJbTXNFRG8PjvJgh50FR0D2WiXLN9hFf6UbcJpc4wZ951aDqAjY_8g0Zggg3AhjCcPkOQaUB6h08/s1600-h/prism03_example.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNFEXyVegLsUyrnCZmJVwPvXcBg-2zWCAR6GhlNWrHCPavTtXwAuvtIGQY7-aA-MuVJbTXNFRG8PjvJgh50FR0D2WiXLN9hFf6UbcJpc4wZ951aDqAjY_8g0Zggg3AhjCcPkOQaUB6h08/s400/prism03_example.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5208410005793351746&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Every prism goes from globe surface (from zero elevation) to the specified top elevation.&lt;br /&gt;You can render it in a wire or filled mode, change the fill and wire color and transparency and modify the top elevation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1hn7umaWZn3xwTF3sxn8tooLZ1WCrGTGyNwzWB3P4JFwg4t3kzTan28Y3OdLnfqeaw9_jeLxrcd3ihgk2vM30EXYPoCjr4bqomNHvpmyvMzwRkhOq_3v7XSCCGlFchll77sQHFXrCZbU/s1600-h/prism02_example.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1hn7umaWZn3xwTF3sxn8tooLZ1WCrGTGyNwzWB3P4JFwg4t3kzTan28Y3OdLnfqeaw9_jeLxrcd3ihgk2vM30EXYPoCjr4bqomNHvpmyvMzwRkhOq_3v7XSCCGlFchll77sQHFXrCZbU/s400/prism02_example.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5208082528641974274&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4uIOjC1RKSYp28rIo6jzIYeL1jnjeNBSXkpoWBA8mPo07WCEL0rtvlMmHFnnCSfzstBL4ER3aM5CUdN5iQZ-NairQXKpRf0WeIbI3k9FubqoFbxSyPqv3A-AlIA8cCwIOgDDLYOqpEl4/s1600-h/prism04_example.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4uIOjC1RKSYp28rIo6jzIYeL1jnjeNBSXkpoWBA8mPo07WCEL0rtvlMmHFnnCSfzstBL4ER3aM5CUdN5iQZ-NairQXKpRf0WeIbI3k9FubqoFbxSyPqv3A-AlIA8cCwIOgDDLYOqpEl4/s400/prism04_example.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5208410010566317330&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the source code &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Prism_Objects_01.zip&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Next video shows the example in action. Sorry for the poor quality but executing WWJ while capturing screen is too much for my ancient laptop :(&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/rdA7FGJNDkA&amp;hl=en&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/rdA7FGJNDkA&amp;hl=en&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/2448362946229904969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/2448362946229904969' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2448362946229904969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/2448362946229904969'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/06/prism-themathic-maps-on-wwj.html' title='Prism (themathic) maps on WWJ'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKGxrSyFPkXlZv5_Iqre9dd45yDANETQnEfkOgW_MDorz3lHAE1KxaTRMdqxWaZlpKcQQbX8tAOQCN1YBOn73jxAPrvuzhD4LuKuIopqmQBL55bqoGJ0FeRwVMjU8CSWrTc7fpAco7GbE/s72-c/prism01_example.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-550850166362971562</id><published>2008-05-31T19:18:00.006+02:00</published><updated>2008-05-31T19:47:05.371+02:00</updated><title type='text'>Prism objects for WWJ</title><content type='html'>Looking at &lt;a href=&quot;http://blog.thematicmapping.org/&quot;&gt;the thematic mapping blog&lt;/a&gt; some time ago I saw a beautifulies KML examples of &lt;a href=&quot;http://blog.thematicmapping.org/2008/05/animated-prism-map-in-google-earth.html&quot;&gt;animated prism maps&lt;/a&gt;.&lt;br /&gt;Prisms are goods to represent amounts with different shapes like countries or cylinders.&lt;br /&gt;&lt;br /&gt;A couple of days ago I have started to work on a new renderable object Prism for WWJ, to allow WWJ community have this useful things. It is still in development but looks very well :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Y-pk5sy6xF5eAcnCq7gd_TdLMfxq7Hvp5LEz1Xe3cvDTRz0MF-DvMRxekf8xgqL-xNVMB4aGJfHAJzE0IH1zQ0EPkex-F7Gfn2DW-nSdxQELedZa2jpmh37v6QlhrkIlgxE20Lgf8NU/s1600-h/prism01.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Y-pk5sy6xF5eAcnCq7gd_TdLMfxq7Hvp5LEz1Xe3cvDTRz0MF-DvMRxekf8xgqL-xNVMB4aGJfHAJzE0IH1zQ0EPkex-F7Gfn2DW-nSdxQELedZa2jpmh37v6QlhrkIlgxE20Lgf8NU/s400/prism01.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5206596069446083570&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Given a set of lat/lon positions you can create a prism object specifying the top elevation, color, etc.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghuADpQ_mMo9flhzksmWolEtetexYELNgYEFPLL_VyD34Z3jGi4E4D8nraAwWon8d0LUrElOjFuWP5t25KMkiSuOMWK6Ho6_7cO0yy15jfB0CL17oY42LRUFCd0mhhB8GmfVDYL8QuiIA/s1600-h/prism02.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghuADpQ_mMo9flhzksmWolEtetexYELNgYEFPLL_VyD34Z3jGi4E4D8nraAwWon8d0LUrElOjFuWP5t25KMkiSuOMWK6Ho6_7cO0yy15jfB0CL17oY42LRUFCd0mhhB8GmfVDYL8QuiIA/s400/prism02.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5206596085463168850&quot; /&gt;&lt;/a&gt;&lt;br /&gt;It looks great, for to be honest has the same problem as the big brother GE has, the hole problem.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8N_wAKZY6811NZWiMfBTT7JKFZThlaS1JmcJcE3RKESip2AUC0aLVvqDRgGhNDcRM9U9NKYUVCdIx0YlC1PtMiYJ8czOvY-peouUE3csk_Gv-Z5ZuzW5SqM6Hm7TnlCSwnHAD8LvyIw8/s1600-h/prism03.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8N_wAKZY6811NZWiMfBTT7JKFZThlaS1JmcJcE3RKESip2AUC0aLVvqDRgGhNDcRM9U9NKYUVCdIx0YlC1PtMiYJ8czOvY-peouUE3csk_Gv-Z5ZuzW5SqM6Hm7TnlCSwnHAD8LvyIw8/s400/prism03.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5206596086290945218&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The vertex of polygon are extruded from globe surface to the specified height, but only the vertex not the polygon itself. Then, for big shapes, like China or Australia and using little heights, a hole can appear.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRTF8HYkUmvv0-A7frsRH9oHA6VH2ivHIs8g5FucAzmCpVvsZwEw_3cVazcw_i2L7VInASLlsnFkl16r-Oq5geZK5vn6x_g5Zbmo9oTREAh8lUNCKjJNUAtiuqcdclB-DUFgmQolWTr4c/s1600-h/prism04.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRTF8HYkUmvv0-A7frsRH9oHA6VH2ivHIs8g5FucAzmCpVvsZwEw_3cVazcw_i2L7VInASLlsnFkl16r-Oq5geZK5vn6x_g5Zbmo9oTREAh8lUNCKjJNUAtiuqcdclB-DUFgmQolWTr4c/s400/prism04.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5206596092661731602&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/550850166362971562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/550850166362971562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/550850166362971562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/550850166362971562'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/05/prism-objects-for-wwj.html' title='Prism objects for WWJ'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Y-pk5sy6xF5eAcnCq7gd_TdLMfxq7Hvp5LEz1Xe3cvDTRz0MF-DvMRxekf8xgqL-xNVMB4aGJfHAJzE0IH1zQ0EPkex-F7Gfn2DW-nSdxQELedZa2jpmh37v6QlhrkIlgxE20Lgf8NU/s72-c/prism01.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-5244543997363320117</id><published>2008-05-29T17:42:00.005+02:00</published><updated>2008-05-29T17:57:36.398+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="gis"/><title type='text'>Google Earth Browser plugin</title><content type='html'>I was thinking about blogging not only about The Balloon Project but also about GIS things. And here is my first post.&lt;br /&gt;&lt;br /&gt;The next links talks about the new release of the Google Earth browser plugin:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://earthissquare.com/2008/05/28/google-earth-in-a-web-page/&lt;/li&gt;&lt;li&gt;http://bullsworld2007.wordpress.com/2008/05/28/another-google-idea-borrowed-from-world-wind/&lt;/li&gt;&lt;li&gt;http://maps.co.mecklenburg.nc.us/ft/?p=238&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;and here is a bit summary of it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;advantage&lt;/li&gt;&lt;ul&gt;&lt;li&gt;it is another product of the google universe&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;disadvantage&lt;/li&gt;&lt;ul&gt;&lt;li&gt;only for windows (at the moment and like the initial release of GE)&lt;/li&gt;&lt;li&gt;memory and processor eater&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;and finally, I would like to note this is a great new for google product fans, but Google doesn&#39;t invent nothing, WWJ and MS VE arrives first, they can be the bastards brothers but arrives first ;)</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/5244543997363320117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/5244543997363320117' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5244543997363320117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5244543997363320117'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/05/google-earth-browser-plugin.html' title='Google Earth Browser plugin'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-5845629699618142194</id><published>2008-03-28T18:56:00.004+01:00</published><updated>2008-03-28T19:02:13.092+01:00</updated><title type='text'>WWJ and using JWindow to improve annotations</title><content type='html'>Here is a screenshot about something I&#39;m trying. I have created a new Renderable object that shows a JPanel into a JWindow at a specified Position (and also a little triangle using OpenGL). The object is responsible to move the JWindow when the globe is rotated and hide it when the position is outside the frustum.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJjO5IomVOs41lVNj-ifphlVQhwjgFmvys-GT_j6BWtnDhCN6uVuI1xvuS3yJ9gMXgJhAtoazzYMYfq2L3IzoQVIgNo0zBHCrQ8LeVIFIFO2kr3vWCKSujUpnR3rUAieSUDsDx8u-br84/s1600-h/jwindow.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJjO5IomVOs41lVNj-ifphlVQhwjgFmvys-GT_j6BWtnDhCN6uVuI1xvuS3yJ9gMXgJhAtoazzYMYfq2L3IzoQVIgNo0zBHCrQ8LeVIFIFO2kr3vWCKSujUpnR3rUAieSUDsDx8u-br84/s400/jwindow.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5182853766943334226&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is not finished but is a easy way to create annotation with all the power of Java :) Also it has a great effect because JWindow annotation can exists and move out the Canvas.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/5845629699618142194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/5845629699618142194' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5845629699618142194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5845629699618142194'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/03/wwj-and-using-jwindow-to-improve.html' title='WWJ and using JWindow to improve annotations'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJjO5IomVOs41lVNj-ifphlVQhwjgFmvys-GT_j6BWtnDhCN6uVuI1xvuS3yJ9gMXgJhAtoazzYMYfq2L3IzoQVIgNo0zBHCrQ8LeVIFIFO2kr3vWCKSujUpnR3rUAieSUDsDx8u-br84/s72-c/jwindow.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-8105089681041053364</id><published>2008-03-17T21:50:00.012+01:00</published><updated>2008-03-17T12:55:51.855+01:00</updated><title type='text'>Load/Save configurations</title><content type='html'>Yes, too much time without news about the Balloon project but, well I continue working on it ;) and currently I&#39;m finishing the load/save configuration mechanism. &lt;br /&gt;Imagine you have an amazing set of layers pointing some images, icons, WMS servers and a couple of views. Now you want to save this &quot;configuration&quot; state.&lt;br /&gt;That&#39;s not all. Maybe you have installed a couple of &lt;span style=&quot;font-style:italic;&quot;&gt;future&lt;/span&gt; :) Balloon plugins and they need to be capable to store their information in the save file too.&lt;br /&gt;&lt;br /&gt;Here is a little example of configuration file:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&lt;Balloon name=&quot;Balloon Configuration&quot;&gt;&lt;br /&gt;    &lt;Stars visible=&quot;false&quot;/&gt;&lt;br /&gt;    &lt;Atmosphere visible=&quot;true&quot;/&gt;&lt;br /&gt;    &lt;Fog visible=&quot;true&quot;/&gt;&lt;br /&gt;    &lt;Worldmap position=&quot;gov.nasa.worldwind.WorldmapLayer.NorthWest&quot; visible=&quot;false&quot;/&gt;&lt;br /&gt;    &lt;Compass position=&quot;gov.nasa.worldwind.CompassLayer.NorthEast&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;    &lt;Scalebar position=&quot;gov.nasa.worldwind.ScalebarLayer.SouthEast&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;    &lt;Timeline position=&quot;TimelineLayer.North&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;    &lt;Views&gt;&lt;br /&gt;        &lt;View name=&quot;New view 1&quot;/&gt;&lt;br /&gt;    &lt;/Views&gt;&lt;br /&gt;    &lt;WorldLayers&gt;&lt;br /&gt;        &lt;Landsat name=&quot;i-cubed Landsat&quot; opacity=&quot;1.0&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;        &lt;WMS layer=&quot;Todas&quot; name=&quot;Todas las capas&quot; opacity=&quot;0.5&quot; server=&quot;http://www.idee.es/wms/IDEE-Base/IDEE-Base&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;        &lt;AnnotatedIcon elevation=&quot;0.0&quot; latitude=&quot;42.25217798245473&quot; longitude=&quot;3.156023105000482&quot; name=&quot;stock_help-agent.png&quot; source=&quot;/home/asantiago/Desktop/Balloon_Icons/stock_help-agent.png&quot; visible=&quot;true&quot;&gt;&lt;br /&gt;            &lt;AnnotationText&gt;ROSAS&lt;/AnnotationText&gt;&lt;br /&gt;        &lt;/AnnotatedIcon&gt;&lt;br /&gt;        &lt;GlobeAnnotation elevation=&quot;0.0&quot; latitude=&quot;41.55723320395057&quot; longitude=&quot;2.5203810261487614&quot; name=&quot;New annotation&quot; visible=&quot;true&quot;&gt;&lt;br /&gt;            &lt;AnnotationText&gt;otro sitio&lt;/AnnotationText&gt;&lt;br /&gt;        &lt;/GlobeAnnotation&gt;&lt;br /&gt;        &lt;FacingIcon elevation=&quot;0.0&quot; latitude=&quot;42.266306504317086&quot; longitude=&quot;3.273907317536755&quot; name=&quot;tools-check-spelling.png&quot; source=&quot;/home/asantiago/Desktop/Balloon_Icons/tools-check-spelling.png&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;        &lt;SurfaceImage maxlatitude=&quot;51.8743896484375&quot; maxlongitude=&quot;13.290637969970703&quot; minlatitude=&quot;40.0&quot; minlongitude=&quot;3.2906382083892822&quot; name=&quot;stock_timer.png&quot; opacity=&quot;1.0&quot; source=&quot;/home/asantiago/Desktop/Balloon_Icons/stock_timer.png&quot; visible=&quot;true&quot;/&gt;&lt;br /&gt;    &lt;/WorldLayers&gt;&lt;br /&gt;&lt;/Balloon&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Note&lt;/span&gt;: The bad syntax is because the syntax highlighter and blogger api. There seems to be a problem with element open closed in the same line like: &lt;code&gt;&amp;lt;img ... /&amp;gt;&lt;/code&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is far to be like a KML file, also it isn&#39;t my intention. The configuration file must store only the current layers (with the attributes needed to restore it later) and the views currently open in the application.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/8105089681041053364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/8105089681041053364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8105089681041053364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8105089681041053364'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/03/loadsave-configurations.html' title='Load/Save configurations'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-8746504060686491166</id><published>2008-01-20T18:01:00.000+01:00</published><updated>2008-01-22T20:32:24.516+01:00</updated><title type='text'>Using SurfacePolygon to render shapefiles</title><content type='html'>Today I a have working with SurfacePolygon to render shapefiles.&lt;br /&gt;SurfacePolygon takes a set of Positions and creates a BufferedImage that is rendered as a normal tile. That has a good performance and the result image can beautifully overlap the terrain&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhstjb5SOQwWbIuKqNLnJq-U1VwhnKgSePVx-X7EsWoUph3dl7BQVSUYApdbtZL856mihLNYL858-gLsHhZYdg1TlmyPjj3AC1IrPT_Yv88CwlCrv3oUwNb2t69RRf5r4GbXffc3aA41KM/s1600-h/shape_pol1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhstjb5SOQwWbIuKqNLnJq-U1VwhnKgSePVx-X7EsWoUph3dl7BQVSUYApdbtZL856mihLNYL858-gLsHhZYdg1TlmyPjj3AC1IrPT_Yv88CwlCrv3oUwNb2t69RRf5r4GbXffc3aA41KM/s400/shape_pol1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5157605809435204338&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The above polygons are configured to create images with 256x256 size. The results seems good, but all depends on how much good you want.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxJ1yhfUVt1lJPSRErZ96wvDOpNq6QQs_F7cCrp-hVcHjeLY4XeQ2jj_tu0y1F3eHtyifFdgbPXDzaSfd0rN4rsSjUlUnAcPxaOfYG4zAeF9kx_Fd6L7lA2Rz0dy-A_jghEOkzAqI7ytE/s1600-h/shape_pol2.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxJ1yhfUVt1lJPSRErZ96wvDOpNq6QQs_F7cCrp-hVcHjeLY4XeQ2jj_tu0y1F3eHtyifFdgbPXDzaSfd0rN4rsSjUlUnAcPxaOfYG4zAeF9kx_Fd6L7lA2Rz0dy-A_jghEOkzAqI7ytE/s400/shape_pol2.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5157605809435204354&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/8746504060686491166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/8746504060686491166' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8746504060686491166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8746504060686491166'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/01/using-surfacepolygon-to-render.html' title='Using SurfacePolygon to render shapefiles'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhstjb5SOQwWbIuKqNLnJq-U1VwhnKgSePVx-X7EsWoUph3dl7BQVSUYApdbtZL856mihLNYL858-gLsHhZYdg1TlmyPjj3AC1IrPT_Yv88CwlCrv3oUwNb2t69RRf5r4GbXffc3aA41KM/s72-c/shape_pol1.jpg" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-4492354686904590215</id><published>2008-01-14T23:15:00.000+01:00</published><updated>2008-01-20T17:42:43.734+01:00</updated><title type='text'>The day when Timeline becomes more graphical</title><content type='html'>This is the new Timeline layer. It is not completely finished but it is more graphical and (at least for me) more beautiful ;)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPN86fh0mhh-O5fS_ibHx6hCKuMVbtDpit_ZhYYIYLu56DPp6ILxW9LCKMDtPgjmDK9u0_Y7-_9OEMNusdNAwOsWZypByhnIHJB1073a8-h-ysRRj7FI2B2ptY5dGYcVIea43_9hpUSPU/s1600-h/graphic_timeline.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPN86fh0mhh-O5fS_ibHx6hCKuMVbtDpit_ZhYYIYLu56DPp6ILxW9LCKMDtPgjmDK9u0_Y7-_9OEMNusdNAwOsWZypByhnIHJB1073a8-h-ysRRj7FI2B2ptY5dGYcVIea43_9hpUSPU/s512/graphic_timeline.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5155459854795561682&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAoMKAowhLnb9tZPUycsL5eFOk0pWk1KemMoKyOi9WWAF-o0qTyhuvTKIJ1kRtAPCxKESIq1e5a_SYpuiJyLDvLwupBBSko74uFgg4-_-rKgU8xn6K_pvjV_sjWxDHfTi-NYnqrTv7IsA/s1600-h/graphic_timeline2.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAoMKAowhLnb9tZPUycsL5eFOk0pWk1KemMoKyOi9WWAF-o0qTyhuvTKIJ1kRtAPCxKESIq1e5a_SYpuiJyLDvLwupBBSko74uFgg4-_-rKgU8xn6K_pvjV_sjWxDHfTi-NYnqrTv7IsA/s320/graphic_timeline2.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5157600011229354722&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To create it,  I was developed before a new little package called &quot;Widgets&quot; with a mini set of classes  implementing: button, image and label.&lt;br /&gt;All them are kinds of widgets and can receive mouse events: entered, exited, left pressed, left clicked, draw and draw end. Depending on these event you can change the properties of the objects: opacity, change its texture (to make feel the button is pressed), font, etc.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/4492354686904590215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/4492354686904590215' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4492354686904590215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4492354686904590215'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/01/day-when-timeline-becomes-more.html' title='The day when Timeline becomes more graphical'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPN86fh0mhh-O5fS_ibHx6hCKuMVbtDpit_ZhYYIYLu56DPp6ILxW9LCKMDtPgjmDK9u0_Y7-_9OEMNusdNAwOsWZypByhnIHJB1073a8-h-ysRRj7FI2B2ptY5dGYcVIea43_9hpUSPU/s72-c/graphic_timeline.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-7844721422564928065</id><published>2008-01-12T22:52:00.001+01:00</published><updated>2008-01-13T10:42:34.218+01:00</updated><title type='text'>Shapefile support finished</title><content type='html'>Thanks to the code I was developed for my original Balloon 3D API I just have finised the shapefile suport for WWJ ;) and I&#39;m very happy because the performance is really good.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqubK9JX0czlDARRjmLvTd-5oob8_3wR_pO94tYBFb1M6EF4TRbReZ2GMgJtdZYCqoyGLVj_dhNWsoFUEKsdiGyJWozSvgRlY0Rnklu3V0R9oStRN6qMrVj2mEYMPhidaPnevSI3XY5w/s1600-h/shapefiles_support.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqubK9JX0czlDARRjmLvTd-5oob8_3wR_pO94tYBFb1M6EF4TRbReZ2GMgJtdZYCqoyGLVj_dhNWsoFUEKsdiGyJWozSvgRlY0Rnklu3V0R9oStRN6qMrVj2mEYMPhidaPnevSI3XY5w/s320/shapefiles_support.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5154711534053644978&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As I say previously, unfortunately it only works fine for flat world. I take a look in the Polyline implementation to know how to render it taking into account the globe relieve.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheTGr9ZZu2lGKZOtuVC1QBHld9ZNcvUBCBFdQ31A7i6fluqq9njLFaKmn63aUhw2rgIymkdBnbkTAHcFM6FnpqwFCJtdizRQIHJ4Nf1Fh3b-wNKPR4PBrKeEcyv9UIXow1ns_OMpGZiN4/s1600-h/shapefile_support1.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheTGr9ZZu2lGKZOtuVC1QBHld9ZNcvUBCBFdQ31A7i6fluqq9njLFaKmn63aUhw2rgIymkdBnbkTAHcFM6FnpqwFCJtdizRQIHJ4Nf1Fh3b-wNKPR4PBrKeEcyv9UIXow1ns_OMpGZiN4/s320/shapefile_support1.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5154893752336145090&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/7844721422564928065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/7844721422564928065' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/7844721422564928065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/7844721422564928065'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/01/shapefile-support-finished.html' title='Shapefile support finished'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRqubK9JX0czlDARRjmLvTd-5oob8_3wR_pO94tYBFb1M6EF4TRbReZ2GMgJtdZYCqoyGLVj_dhNWsoFUEKsdiGyJWozSvgRlY0Rnklu3V0R9oStRN6qMrVj2mEYMPhidaPnevSI3XY5w/s72-c/shapefiles_support.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-4377545776303899030</id><published>2008-01-12T19:02:00.001+01:00</published><updated>2008-01-12T22:46:11.693+01:00</updated><title type='text'>Shapefile support started</title><content type='html'>Today I have started the support for shapefiles in WWJ.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkzeXKqkjaQQwEU2cbTTDpYror0JLzaSBH-V9i-ERT3os_a-435rV6M17xIBetyeAbbOKdQxQEG8W73dCTRuWmCvmfn8oC7hxBHQuevyNZaeBcxh1-kRnQjLHP9ictx-uOfOxbSyQ0MX4/s1600-h/shapefiles.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkzeXKqkjaQQwEU2cbTTDpYror0JLzaSBH-V9i-ERT3os_a-435rV6M17xIBetyeAbbOKdQxQEG8W73dCTRuWmCvmfn8oC7hxBHQuevyNZaeBcxh1-kRnQjLHP9ictx-uOfOxbSyQ0MX4/s320/shapefiles.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5154652164720712354&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;There to group of things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Goods. These are the good things about the implementation:&lt;/li&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I am adapting the same code I used some time ago in my own 3D API of Balloon Project. That is a good new for me :)&lt;/li&gt;&lt;li&gt;The features are loaded &quot;dynamically&quot;, not waits until the whole file is read, instead the reader process adds on the fly a new renderable object for each read feature.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The implementation uses display list and the performance is pretty good.&lt;/li&gt;&lt;li&gt;It allows read points, polygons and collection of geometries (I need to refresh the geometry hierarchy).&lt;/li&gt;&lt;li&gt;You can specify the color, opacity and thickness of geometries. When some property that affects its visualization the display list is recreated.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;Bads. These are the bad new about the implementation.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Polygon are not filled.&lt;/li&gt;&lt;li&gt;You must to set the globe to a flat globe (vertical exaggeration equal zero). For the moment there are problems with the globe relieve.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/4377545776303899030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/4377545776303899030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4377545776303899030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4377545776303899030'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/01/shapefile-support-started.html' title='Shapefile support started'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkzeXKqkjaQQwEU2cbTTDpYror0JLzaSBH-V9i-ERT3os_a-435rV6M17xIBetyeAbbOKdQxQEG8W73dCTRuWmCvmfn8oC7hxBHQuevyNZaeBcxh1-kRnQjLHP9ictx-uOfOxbSyQ0MX4/s72-c/shapefiles.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-4846874030395015449</id><published>2008-01-07T16:17:00.000+01:00</published><updated>2008-01-07T16:49:45.646+01:00</updated><title type='text'>...and the Balloon becomes pluggable</title><content type='html'>Spending some of my vacation days on the Balloon project, finally I almost finished the base platform, composed by three main modules:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFWHfOxxhIP_QbHIh0Kv6-FyVQrkh_lLtmvI8kPckI0d9kgEWvExHRaq6v9cBwhuHhIodOph5erqyBWjsP1XPR5N1w0RYG6j1QYxx08WmRYlQ3rmTDrfN4X84MoDDYJ6AYYB44iJmV1A8/s1600-h/scr1.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFWHfOxxhIP_QbHIh0Kv6-FyVQrkh_lLtmvI8kPckI0d9kgEWvExHRaq6v9cBwhuHhIodOph5erqyBWjsP1XPR5N1w0RYG6j1QYxx08WmRYlQ3rmTDrfN4X84MoDDYJ6AYYB44iJmV1A8/s320/scr1.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152755593062144466&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Core module: Responsibles for the 3D rendering process and interaction with the elements. Here I put some of my own extension to WWJ that helps to improve the layer management, add new object (like AnnotatedIcons), ...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use interface module: Contains the basic GUI for the Balloon with:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Layer manager: allows to handle elements as a layer stack, moving elements up/down, creating group of elements, ...&lt;/li&gt;&lt;li&gt;Property window: each element has its own properties that are shown and modified through the properties window.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A set of basic wizards to import: images (local or remote), WMS layers, icons and annotations.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Support module: Contains some third party libraries needed by the GUI (like SwingX).&lt;/li&gt;&lt;/ul&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmq8VBO9VbVQMGx-8VMOtbcrd7eh3aLLk3u5wB8_kSSx2MyE5qVXNgSWDUkXlywyXQ2yTFXf-im5gozhGJY_quHYtkIPPM7k8kEk_-Fmxata8IRvnJAr806Uc9hpTaFDM-65PBS8fxhXU/s1600-h/scr2.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmq8VBO9VbVQMGx-8VMOtbcrd7eh3aLLk3u5wB8_kSSx2MyE5qVXNgSWDUkXlywyXQ2yTFXf-im5gozhGJY_quHYtkIPPM7k8kEk_-Fmxata8IRvnJAr806Uc9hpTaFDM-65PBS8fxhXU/s320/scr2.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152755593062144482&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;This part needs some improvements but it current state is &lt;span style=&quot;font-style: italic;&quot;&gt;very decent&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;On the other side, I have started to develop the first plugin for the base platform. This pluggin  integrates some &lt;a href=&quot;http://www.geonames.org/&quot;&gt;geonames&lt;/a&gt; capabilities into the Balloon, it allows to search toponyms and put into the globe as annotation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqLGkaEgBNRZSt7F89O-WeRmSjyb5fp0VMEy9kVdmptzxN8_QJOYTgnCBATpbGBrulA6EMZF1HjdoZbqQJcz-pc3_j9q5opJ_vqeDD40jLwzfjckJ8zvocHNiygMAUnnvOE0zeR71dC7Y/s1600-h/scr3.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqLGkaEgBNRZSt7F89O-WeRmSjyb5fp0VMEy9kVdmptzxN8_QJOYTgnCBATpbGBrulA6EMZF1HjdoZbqQJcz-pc3_j9q5opJ_vqeDD40jLwzfjckJ8zvocHNiygMAUnnvOE0zeR71dC7Y/s320/scr3.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152755597357111794&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Once installed the plugin, a new wizard is present in the &quot;pluggins&quot; tab. It allows to search any toponym with the given text (with some filter options).&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy3atjkVi1ijtLI3IxHa6SdNZNs5f_YA8x9C0x2BFCBaPeZ5CMnSvUvNBTLLlZwNlHVTXF3n7B4H3Z7I3pm2btbm62AwqkIyzteiz41ngm0CGB3UT5BSqz7bcCtnwol6c0IYZqvgj353I/s1600-h/scr4.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy3atjkVi1ijtLI3IxHa6SdNZNs5f_YA8x9C0x2BFCBaPeZ5CMnSvUvNBTLLlZwNlHVTXF3n7B4H3Z7I3pm2btbm62AwqkIyzteiz41ngm0CGB3UT5BSqz7bcCtnwol6c0IYZqvgj353I/s320/scr4.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152755597357111810&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;If the geoname webservices returns any found data, then we can select which one to put in the globe as annotation:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJIPP3R1S8H5w7YfLN6RHsMTlG3LXg1DQdYCyBKCjq5Sc5_jNnG4O92Uy0lwmrVpDhMusrCSEimW9OZqiChBi5DCeyaem8nGKENwhjXMM1wiHk5lAFkFW_0-vicKAN_hyphenhyphenWaNuyyhjZ2D0/s1600-h/scr5.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJIPP3R1S8H5w7YfLN6RHsMTlG3LXg1DQdYCyBKCjq5Sc5_jNnG4O92Uy0lwmrVpDhMusrCSEimW9OZqiChBi5DCeyaem8nGKENwhjXMM1wiHk5lAFkFW_0-vicKAN_hyphenhyphenWaNuyyhjZ2D0/s320/scr5.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152755601652079122&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;and finally we get his:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhamNlVfRCiXHlyd2vtNtBRhh2xBxppK1HKR-scFEsN-kmX0Q_k5BM0NkIT498oqtC_-3SkWQuByDp16OzgGvV_M_TKA9mMo71btXmZDcjybB1ONs7XivQp5Y9SSvWHPrpyz42yBfzpXz4/s1600-h/scr6.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhamNlVfRCiXHlyd2vtNtBRhh2xBxppK1HKR-scFEsN-kmX0Q_k5BM0NkIT498oqtC_-3SkWQuByDp16OzgGvV_M_TKA9mMo71btXmZDcjybB1ONs7XivQp5Y9SSvWHPrpyz42yBfzpXz4/s320/scr6.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5152756168587762210&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/4846874030395015449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/4846874030395015449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4846874030395015449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4846874030395015449'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2008/01/and-balloon-becomes-pluggable.html' title='...and the Balloon becomes pluggable'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFWHfOxxhIP_QbHIh0Kv6-FyVQrkh_lLtmvI8kPckI0d9kgEWvExHRaq6v9cBwhuHhIodOph5erqyBWjsP1XPR5N1w0RYG6j1QYxx08WmRYlQ3rmTDrfN4X84MoDDYJ6AYYB44iJmV1A8/s72-c/scr1.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-4145485509174005898</id><published>2007-12-24T12:38:00.000+01:00</published><updated>2007-12-24T12:48:37.975+01:00</updated><title type='text'>WWJ Annotated Icons</title><content type='html'>Suppose you have icons around the globe representing some type of events (traffic, rain, fire, ...) and you want to see more information when click on them with the mouse.&lt;br /&gt;&lt;br /&gt;Well, I have created the so called AnnotatedIcons with this idea in mind. Note, as suggested &lt;a href=&quot;http://forum.worldwindcentral.com/showpost.php?p=53252&amp;postcount=8&quot;&gt;here&lt;/a&gt; byt Pat, there is another approach to achieve similar effect based only in annotations (one annotation with two or more annotation attribute styles). Unfortunately :( I had done the major part of code when I known the alternative, and anyway I like AnnotatedIcons :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN1pvf8uB5dLSS98H8fEdMtNyswHrbU4YK7Y8Muce4TDDe_pdHP2wOtFMVKZuY_RygA6GY-1eNRrnXFYZACyZnAZrDXd8LbTYGYax0P1fHrN2ND4LFUTvCHlSGMkkhc21m3ZHUKGyu8oo/s1600-h/annotated_icon.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN1pvf8uB5dLSS98H8fEdMtNyswHrbU4YK7Y8Muce4TDDe_pdHP2wOtFMVKZuY_RygA6GY-1eNRrnXFYZACyZnAZrDXd8LbTYGYax0P1fHrN2ND4LFUTvCHlSGMkkhc21m3ZHUKGyu8oo/s320/annotated_icon.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5147504604700760466&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see in the image (I have no time to make a video), some icons are rendered and when the mouse is over one its associated annotation is shown with more extended information.&lt;br /&gt;&lt;br /&gt;You can take the source code from &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Annotated_Icons_01.zip&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/4145485509174005898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/4145485509174005898' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4145485509174005898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/4145485509174005898'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/12/wwj-annotated-icons.html' title='WWJ Annotated Icons'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN1pvf8uB5dLSS98H8fEdMtNyswHrbU4YK7Y8Muce4TDDe_pdHP2wOtFMVKZuY_RygA6GY-1eNRrnXFYZACyZnAZrDXd8LbTYGYax0P1fHrN2ND4LFUTvCHlSGMkkhc21m3ZHUKGyu8oo/s72-c/annotated_icon.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-1268172789518452631</id><published>2007-12-24T12:13:00.001+01:00</published><updated>2007-12-24T13:01:25.321+01:00</updated><title type='text'>WWJ Rotable Icons</title><content type='html'>Reading &lt;a href=&quot;http://forum.worldwindcentral.com/showthread.php?t=13190&quot;&gt;this&lt;/a&gt; thread other developer talk about how useful will be have icons that can be rotated.&lt;br /&gt;I don&#39;t know if these contribution success with all expectation but if you can compute the heading desired for your icons then these can be useful for you.&lt;br /&gt;The RotableUserFacingIcon implementation allows to specify the heading rotation of your icons (like the compass).&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhupR7WNEisjOCH9CnZObCX60tCsGgD7wjqB7Kyen2CY2nM9clPrh4_MjGscZphg-TAgqvt2iY-8JbAPNaaGVoWtuZpNhr5vA3thm6YdXZWAZkRHD7WMyLtAmoqQcUHfIaISwcOYeX6VGc/s1600-h/rotable_icons.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhupR7WNEisjOCH9CnZObCX60tCsGgD7wjqB7Kyen2CY2nM9clPrh4_MjGscZphg-TAgqvt2iY-8JbAPNaaGVoWtuZpNhr5vA3thm6YdXZWAZkRHD7WMyLtAmoqQcUHfIaISwcOYeX6VGc/s320/rotable_icons.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5147506116529248674&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get the source code from &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Rotable_Icons_01.zip&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note, this contribution adds a peace of code into the &lt;span style=&quot;font-style:italic;&quot;&gt;IconRenderer&lt;/span&gt; class to allows icon rotation take effect, and also take into account the icon is slightly displaced when it is a rotable icon.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/1268172789518452631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/1268172789518452631' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/1268172789518452631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/1268172789518452631'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/12/wwj-rotable-icons.html' title='WWJ Rotable Icons'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhupR7WNEisjOCH9CnZObCX60tCsGgD7wjqB7Kyen2CY2nM9clPrh4_MjGscZphg-TAgqvt2iY-8JbAPNaaGVoWtuZpNhr5vA3thm6YdXZWAZkRHD7WMyLtAmoqQcUHfIaISwcOYeX6VGc/s72-c/rotable_icons.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-5573641351888508599</id><published>2007-12-08T13:34:00.001+01:00</published><updated>2007-12-08T13:39:50.771+01:00</updated><title type='text'>The new balloon...</title><content type='html'>I&#39;m glad to present a screenshot about the new balloon application.&lt;br /&gt;&lt;br /&gt;For the moment I&#39;m working very hard on the user interface, but it allows to work with the default WWJ BlueMarble and Lansat layers, load images (local or remote) with &lt;a href=&quot;http://theballoonproject.blogspot.com/2007/11/wwj-surfaceimage-reloaded.html&quot;&gt;re-loading option&lt;/a&gt; ;) and animate with a temporality associated.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIOx__lhR7YNujruuFud46px_7uLJjtyC8iWIsVwPbX3KisnXsMY3-Hhv1bvQt79L_xjF4sa2OyWwy_dJpeJShTXHrfnhq2PgBaYWbBQzP1jH5yNC7Sljzd-IxWrSz9oL0s0AcvOfvjCE/s1600-h/newballoon.jpg&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIOx__lhR7YNujruuFud46px_7uLJjtyC8iWIsVwPbX3KisnXsMY3-Hhv1bvQt79L_xjF4sa2OyWwy_dJpeJShTXHrfnhq2PgBaYWbBQzP1jH5yNC7Sljzd-IxWrSz9oL0s0AcvOfvjCE/s320/newballoon.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5141579684687944802&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/5573641351888508599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/5573641351888508599' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5573641351888508599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5573641351888508599'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/12/new-balloon.html' title='The new balloon...'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIOx__lhR7YNujruuFud46px_7uLJjtyC8iWIsVwPbX3KisnXsMY3-Hhv1bvQt79L_xjF4sa2OyWwy_dJpeJShTXHrfnhq2PgBaYWbBQzP1jH5yNC7Sljzd-IxWrSz9oL0s0AcvOfvjCE/s72-c/newballoon.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-5961038491849216715</id><published>2007-11-27T00:15:00.000+01:00</published><updated>2007-11-27T00:22:14.691+01:00</updated><title type='text'>WWJ SurfaceImage reloaded</title><content type='html'>Don&#39;t worry this isn&#39;t Matrix ;) (I hope it)&lt;br /&gt;&lt;br /&gt;I have made a little update on the previous update of SurfaceImage to allow reload of data.&lt;br /&gt;Suppose you have an image file that can be modified by an external process and you want reload it at  regular intervals of time to see its changes.&lt;br /&gt;Now you can have it with SurfaceImage reloaded :)&lt;br /&gt;&lt;br /&gt;You can get the source code &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Asynchronous_SurfaceImage_04.zip&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have added a new &lt;span style=&quot;font-style:italic;&quot;&gt;reload(boolean useCache)&lt;/span&gt; method. Note, it has one boolean parameter to specify if the image must be reloaded from cache (if it is there, I think this option isn&#39;t very useful) or reloading it from the original source of data.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/5961038491849216715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/5961038491849216715' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5961038491849216715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/5961038491849216715'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/11/wwj-surfaceimage-reloaded.html' title='WWJ SurfaceImage reloaded'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-897973523555616208</id><published>2007-11-26T20:37:00.000+01:00</published><updated>2007-11-26T20:49:12.038+01:00</updated><title type='text'>A note on LayerSet</title><content type='html'>Unfortunately I must recognize I am a newbie with my own code :P&lt;br /&gt;Using LayerSet in the Balloon project I get a little headache I want to comment here.&lt;br /&gt;LayerSet extends LayerList class and also implements the Layer interface (in the same way as AbstractLayer).&lt;br /&gt;Take very into account, that &lt;span style=&quot;font-style:italic;&quot;&gt;if you create a LayerSet an adds a LayerList object, all contained layers in LayerList are copied into the LayerSet&lt;/span&gt;, and that&#39;s all. If later you modify the LayerList, adding or removing layers, the &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;changes are not propagated to the LayerSet&lt;/span&gt;&lt;/span&gt;.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/897973523555616208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/897973523555616208' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/897973523555616208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/897973523555616208'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/11/note-on-layerset.html' title='A note on LayerSet'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-8105142759343141019</id><published>2007-11-23T17:45:00.000+01:00</published><updated>2007-11-23T17:56:22.747+01:00</updated><title type='text'>WWJ renderable objects</title><content type='html'>Although it seems a very big change, here I present a WWJ hack to convert more object into Renderable object, that is, objects that implements the Renderable interface.&lt;br /&gt;I have made only three things to achieve this:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Add the next methods to the Renderable interface:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    public boolean isEnabled();&lt;br /&gt;    public void setEnabled(boolean enabled);&lt;br /&gt;    public String getName();&lt;br /&gt;    public void setName(String name);&lt;br /&gt;    public double getOpacity();&lt;br /&gt;    public void setOpacity(double opacity);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The idea is that a any Renderable object can has a enable/disable state, an opacity value and optionally a name.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;Add a default implementation for this method in all affected classes and interfaces. The default implementation doesn&#39;t alter the normal behavior of this elements.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Default Renderable implementation.&lt;br /&gt;     */&lt;br /&gt;    public boolean isEnabled()&lt;br /&gt;    {&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setEnabled(boolean enabled)&lt;br /&gt;    {&lt;br /&gt;    // Do nothing.&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getName()&lt;br /&gt;    {&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setName(String name)&lt;br /&gt;    {&lt;br /&gt;    // Do nothing.&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public double getOpacity()&lt;br /&gt;    {&lt;br /&gt;        return 1;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setOpacity(double opacity)&lt;br /&gt;    {&lt;br /&gt;    // Do nothing.&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;Added a new class RenderableListLayer, similar to LayerList that can contain any &quot;new&quot; Renderable object, that is, Layers, Icons, Images, etc.&lt;br /&gt;Here are a peace of code using this class:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;            LayerList ll = new LayerList();&lt;br /&gt;            RenderableListLayer main = new RenderableListLayer();&lt;br /&gt;&lt;br /&gt;            main.add(new BMNGSurfaceLayer());&lt;br /&gt;            main.add(new LandsatI3());&lt;br /&gt;            main.add(new ScalebarLayer());              &lt;br /&gt;            &lt;br /&gt;            RenderableListLayer rll = new RenderableListLayer();&lt;br /&gt;            rll.add(si1);&lt;br /&gt;            rll.add(si2);&lt;br /&gt;            rll.add(si3);&lt;br /&gt;            rll.add(new CompassLayer());&lt;br /&gt;            rll.add(new WorldMapLayer());  &lt;br /&gt;            &lt;br /&gt;            main.add(rll);&lt;br /&gt;            main.setPickEnabled(false);&lt;br /&gt;&lt;br /&gt;            ll.add(main);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Source code can be found &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Renderable_01.zip&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally it must be necessary to implement the appropriate mechanism to render images, nodes and other Renderable object taking into account its opacity and enable values.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/8105142759343141019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/8105142759343141019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8105142759343141019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8105142759343141019'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/11/wwj-renderable-objects.html' title='WWJ renderable objects'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-6993036632508053085</id><published>2007-11-21T19:48:00.000+01:00</published><updated>2007-11-21T21:31:19.919+01:00</updated><title type='text'>WWJ Movable SurfaceImage</title><content type='html'>Finally I have modified the SurfaceImage class to implement the Movable interface too.&lt;br /&gt;The source code can be found &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_New_SurfaceImage_01.zip&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/n_LK1kQ8-Mg&amp;rel=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/n_LK1kQ8-Mg&amp;rel=1&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/6993036632508053085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/6993036632508053085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/6993036632508053085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/6993036632508053085'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/11/wwj-movable-surfaceimage.html' title='WWJ Movable SurfaceImage'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7164397541573936868.post-8361185102005546074</id><published>2007-11-18T12:14:00.000+01:00</published><updated>2007-11-18T12:20:09.985+01:00</updated><title type='text'>WWJ remote SurfaceImage updated</title><content type='html'>Well, after a couple of days improving some things finally here is the until now best version of SurfaceImage ;)&lt;br /&gt;&lt;br /&gt;The new features are:&lt;br /&gt;* Local and remote images (except BufferedImage&#39;s) are loaded in a separate thread.&lt;br /&gt;* Remote images are cached on disk, to avoid network overhead.&lt;br /&gt;* Added a &#39;setSector&#39; method to change the image sector position.&lt;br /&gt;&lt;br /&gt;You can find the source code &lt;a href=&quot;http://asantiagop.googlepages.com/WWJ_Asynchronous_SurfaceImage_02.zip&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://theballoonproject.blogspot.com/feeds/8361185102005546074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7164397541573936868/8361185102005546074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8361185102005546074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7164397541573936868/posts/default/8361185102005546074'/><link rel='alternate' type='text/html' href='http://theballoonproject.blogspot.com/2007/11/wwj-remote-surfaceimage-updated.html' title='WWJ remote SurfaceImage updated'/><author><name>Antonio  Santiago</name><uri>http://www.blogger.com/profile/05354117103226692378</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>