﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Virtual Earth</title>
    <description>Virtual Earth news, projects, samples and tips</description>
    <link>http://www.soulsolutions.com.au/Blog/tabid/73/BlogId/8/Default.aspx</link>
    <language>en-AU</language>
    <managingEditor>veblog@soulsolutions.com.au</managingEditor>
    <webMaster>John@soulsolutions.com.au</webMaster>
    <pubDate>Tue, 09 Feb 2010 21:17:39 GMT</pubDate>
    <lastBuildDate>Tue, 09 Feb 2010 21:17:39 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.5.0.35082</generator>
    <item>
      <title>Guide complet de la cartographie interactive</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="http://soulsolutions.com.au/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;&lt;a href="http://blogs.developpeur.org/nicoboo/archive/2010/01/13/livre-bing-maps-for-enterprise-guide-complet-de-la-cartographie-interactive.aspx"&gt;Nicolas Boonaert’s book on Bing Maps has been released&lt;/a&gt; and it looks awesome! Nicolas lives in France and is an active developer in the Bing Maps community. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.developpeur.org/nicoboo/archive/2010/01/13/livre-bing-maps-for-enterprise-guide-complet-de-la-cartographie-interactive.aspx"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="BingMapsforEnterpriseLivreGuidecompletdelacartographieinteractive_0196FA70" border="0" alt="BingMapsforEnterpriseLivreGuidecompletdelacartographieinteractive_0196FA70" src="/Portals/0/Blog/Files/8/642/WLW-Guidecompletdelacartographieinteractive_88D1-BingMapsforEnterpriseLivreGuidecompletdelacartographieinteractive_0196FA70_3.jpg" width="169" height="205" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The book is in French, but amazingly I can still understand much of it :) It covers quite a bit in 450 pages:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;History, including TerraServer, MapPoint Web Service and Virtual Earth&lt;/li&gt;    &lt;li&gt;Architecture of the platform&lt;/li&gt;    &lt;li&gt;AJAX control&lt;/li&gt;    &lt;li&gt;Silverlight&lt;/li&gt;    &lt;li&gt;Bing Maps Web Service&lt;/li&gt;    &lt;li&gt;Building Mobile applications&lt;/li&gt;    &lt;li&gt;3rd Party Projects, including DeepEarth&lt;/li&gt;    &lt;li&gt;Comparison with Google Maps, Yahoo Maps and OSM.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If your interested in Bing Maps or web mapping in general and can read French this is a must. If you don’t speak French but this sort of title interests you, then ping Nicolas and encourage him to do an English translation, &lt;a href="http://twitter.com/NicolasBoonaert"&gt;he is on twitter here&lt;/a&gt;. Great work Nicolas!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:555bbd8e-0a8c-4bd0-a6ec-094ed229a138" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Bing+Maps" rel="tag"&gt;Bing Maps&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Nicolas+Boonaert" rel="tag"&gt;Nicolas Boonaert&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Book+Review" rel="tag"&gt;Book Review&lt;/a&gt;&lt;/div&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/642/Guide-complet-de-la-cartographie-interactive.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/642/Guide-complet-de-la-cartographie-interactive.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/642/Guide-complet-de-la-cartographie-interactive.aspx</guid>
      <pubDate>Mon, 08 Feb 2010 23:43:57 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=642</trackback:ping>
    </item>
    <item>
      <title>High CPU usage issues solved in the Silverlight MultiScaleImage control</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;Good news for all Bing Maps developers with &lt;a href="http://support.microsoft.com/default.aspx/kb/979202" target="_blank"&gt;windows update 979202&lt;/a&gt; solving a major performance issue.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;CPU usage is high when you use the Deep Zoom feature in Silverlight 3. This problem occurs when the Deep Zoom feature cannot load or decode a tile. The problem persists even if you minimize the Web browser in which the Silverlight 3 application is running.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This would occur if you had either :&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;a custom tile layer that would return 404 errors when tiles were requested (typical for a simple file system on edge tiles that don’t exist but are still requested by the control) or &lt;/li&gt;    &lt;li&gt;if you disabled the coverage map of the base layers and zoomed into the non-covered area.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cpuusage" border="0" alt="cpuusage" src="/Portals/0/Blog/Files/8/641/WLW-HighCPUusageissuessolvedintheSilverlight_10388-cpuusage_3.jpg" width="604" height="337" /&gt; &lt;/p&gt;  &lt;p&gt;Additionally my tests prove that an additional problem with animations causing the MSI control to redraw have also been solved.&lt;/p&gt;  &lt;p&gt;This is great news and allows us to do some clever things with dynamic tile layers and animated icons on the map without major performance hits. I hope to share some of these with you in coming posts.&lt;/p&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/641/High-CPU-usage-issues-solved-in-the-Silverlight-MultiScaleImage-control.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/641/High-CPU-usage-issues-solved-in-the-Silverlight-MultiScaleImage-control.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/641/High-CPU-usage-issues-solved-in-the-Silverlight-MultiScaleImage-control.aspx</guid>
      <pubDate>Mon, 25 Jan 2010 08:27:39 GMT</pubDate>
      <slash:comments>7</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=641</trackback:ping>
    </item>
    <item>
      <title>Win your share of $10,000,000 with Bing Maps and Navteq</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="/Portals/0/johnWeeGo.jpg" width="34" height="48" /&gt;This week I caught up with Laura Diaz from NAVTEQ to chat about how Bing Maps developers can win their share of US 10 million dollars in the global LBS Challenge. This is the first year that web based applications can be submitted and with Microsoft’s Bing Maps use of NAVTEQ data the ideal platform to build your entry is clear.&lt;/p&gt; &lt;iframe height="50" src="/silverlight/LBSChallengeInterview/" frameborder="0" width="600"&gt;   &lt;p&gt;Your browser does not support iframes, download the MP3 directly below.&lt;/p&gt;&lt;/iframe&gt;  &lt;p&gt;You can &lt;a href="http://www.soulsolutions.com.au/silverlight/LBSChallengeInterview/navteq.mp3"&gt;download the mp3 here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“First launched in 2003, the NAVTEQ Global LBS Challenge is focused on driving the development and visibility of innovative location-based solutions (LBS) for wireless devices. The Global LBS Challenge has become the premier event in the wireless industry and a global symbol of LBS innovation and opportunity. From business applications to sports, travel and security, integrating the accuracy and richness of NAVTEQ digital map data facilitates the discovery of the next wave of LBS using dynamic positioning technology.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Highlights:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;$10,000,000 in prizes consists of cash and data licenses. &lt;/li&gt;    &lt;li&gt;Real opportunity to meet some of the top companies in this field. &lt;/li&gt;    &lt;li&gt;Competition is broken into regions, must register soon, North America closes 20th November! &lt;/li&gt;    &lt;li&gt;Web applications can simple be submitted as a working URL &lt;/li&gt;    &lt;li&gt;Mobile applications making it to the next round will get a sponsored device if they choose that device in their entry. &lt;/li&gt;    &lt;li&gt;Open to non-commercial applications &lt;/li&gt;    &lt;li&gt;With the release of the new Bing Maps Silverlight control will we see some very cool entries? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;For more information &lt;a href="http://www.nn4d.com/site/global/market/lbs_challenge/about/about/p_about_challenge.jsp" target="_blank"&gt;visit the competition homepage&lt;/a&gt; there is a great PDF to step you through the entire registration process here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nn4d.com/getDocument.do?docId=5837"&gt;http://www.nn4d.com/getDocument.do?docId=5837&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Laura can be contacted on her email address: laura.diaz at navteq.com&lt;/p&gt;  &lt;p&gt;Please follow me on twitter for all the latest Bing Maps Developer news: &lt;a href="http://twitter.com/bingmapsdev"&gt;http://twitter.com/bingmapsdev&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0a73f654-0baa-47ea-9c52-e4e16822938d" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Bing+Maps" rel="tag"&gt;Bing Maps&lt;/a&gt;,&lt;a href="http://technorati.com/tags/NAVTEQ" rel="tag"&gt;NAVTEQ&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Competition" rel="tag"&gt;Competition&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/638/Win-your-share-of-10-000-000-with-Bing-Maps-and-Navteq.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/638/Win-your-share-of-10-000-000-with-Bing-Maps-and-Navteq.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/638/Win-your-share-of-10-000-000-with-Bing-Maps-and-Navteq.aspx</guid>
      <pubDate>Sat, 14 Nov 2009 00:57:54 GMT</pubDate>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=638</trackback:ping>
    </item>
    <item>
      <title>Bing your data to life, the Bing Maps Silverlight control</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="BronwenWeeGo[1]" border="0" alt="BronwenWeeGo[1]" src="/Portals/0/BronwenWeeGo.jpg" width="30" height="40" /&gt;Here at Tech Ed Australia 2009 we are presenting on the Bing Maps Silverlight control, it’s session WEB302. If you’re in the crowd or simply reading this after the event you can follow along with our demos here.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://about.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="about" border="0" alt="about" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-about_81e7e452-b97c-45f5-8cba-a37f07dc61bf.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://about.soulsolutions.com.au/" href="http://about.soulsolutions.com.au/"&gt;http://about.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;First up is a little visualisation of where we work and play. This data is hard coded into the application and took less then an hour to put together. The minimap, custom navigation and custom image pin are part of the open source &lt;a href="http://deepearth.codeplex.com/" target="_blank"&gt;DeepEarth&lt;/a&gt; project.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://bingmapsupdates.cloudapp.net/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="updates" border="0" alt="updates" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-updates_54279d74-8d3f-4533-b1c1-5541555d7c59.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://bingmapsupdates.cloudapp.net/" href="http://bingmapsupdates.cloudapp.net/"&gt;http://bingmapsupdates.cloudapp.net/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This site was built by Earthware in the UK for Microsoft. It showcases the latest imagery updates every month. Prior to this application monthly updates where only announced in text form. The application is completely custom.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://vethematic.soulclients.com/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="thematic" border="0" alt="thematic" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-thematic_81948284-d208-4b75-a302-73eb2272f3ca.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://vethematic.soulclients.com/" href="http://vethematic.soulclients.com/"&gt;http://vethematic.soulclients.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our very first Bing Maps Silverlight demo, this visualisation shows the 2004 carbon emissions per capita world wide. Green is better then red. The country polygons are highly detailed SQL 2008 Geography data rendered as vectors. We have had to heavily reduce the complexity and batch the rendering for performance. If you hover over Australia we demonstrate using this vector as to display a video from the prime minister. The concept is quite appealing but the execution needs a little work as the mouse enter and exit event rapidly reset the video in this demo.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.minus34.com/geodemo/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="hugh" border="0" alt="hugh" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-hugh_6bd101dd-000c-434e-99dc-fe89302fa159.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.minus34.com/geodemo/" href="http://www.minus34.com/geodemo/"&gt;http://www.minus34.com/geodemo/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hugh recently released this demo of Australian statistics rendered from SQL 2008. The data is cleverly loaded on demand based on the current zoom level and bounds.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://spatialquery.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="query" border="0" alt="query" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-query_ea9298dd-62cc-4b70-b6bc-ba322f8b4802.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://spatialquery.soulsolutions.com.au/" href="http://spatialquery.soulsolutions.com.au/"&gt;http://spatialquery.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This demo was built for WardyIT to demonstrate how SQL 2008 spatial queries can be created from Bing Map data, in this case a route, and the result visualised. This demo has been updated to use the latest controls and patterns from &lt;a href="http://deepearth.codeplex.com/" target="_blank"&gt;DeepEarth&lt;/a&gt;. Please note: this is running on my server so I’ve limited the size of a route you can query to a few hundred KM. I may have to disable the demo or relocate it.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://drawing.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="drawing" border="0" alt="drawing" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-drawing_4cbc6ca1-8fec-412a-8a08-3a16a7f08f45.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://drawing.soulsolutions.com.au/" href="http://drawing.soulsolutions.com.au/"&gt;http://drawing.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our premier SQL 2008 demo allowing everyone to draw shapes using the &lt;a href="http://deepearth.codeplex.com/" target="_blank"&gt;DeepEarth&lt;/a&gt; digitizer control and save that data to SQL 2008 geography. I’ve removed the user permission logic so this demo is a free for all. Add and edit at will. I will clear out any obvious test data from time to time keeping just the best submissions.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://multitouch.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="multitouch" border="0" alt="multitouch" src="/Portals/0/Blog/Files/8/631/WLW-BingMapsSilverlightMultitouchAussiePartn_C919-SarahAPCKeynote_360c70ca-1ed0-46d1-bd13-32d2e9ce008d.jpg" width="452" height="360" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://multitouch.soulsolutions.com.au/" href="http://multitouch.soulsolutions.com.au/"&gt;http://multitouch.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are lucky enough to have a Multi touch Windows7 device then try out some custom gestures we have written in Silverlight3. These include pinch zoom, map mode change and swipe to launch the digitizer. On a tablet use the stylus to draw some shapes.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://photosynth.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="synth" border="0" alt="synth" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-synth_8272efa9-619b-42b1-881d-68adf6df1c85.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://photosynth.soulsolutions.com.au/" href="http://photosynth.soulsolutions.com.au/"&gt;http://photosynth.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If your photosynth has been geotagged on photosynth.net then it will appear in our Mashup here. This demonstrates some ideas for how Photosynth and Bing Maps may integrate in the future using perspective 3D and both running in Silverlight3.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://tc.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="traffic" border="0" alt="traffic" src="/Portals/0/Blog/Files/8/632/WLW-BingyourdatatolifetheBingMapsSilverlight_14B54-traffic_f3e4968f-ae28-4c65-b302-5c9a97bb7bb3.jpg" width="602" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://tc.soulsolutions.com.au/" href="http://tc.soulsolutions.com.au/"&gt;http://tc.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our entry into this years Windows Azure #newcloudapp competition this prototype aggregates Traffic Web cameras from around the world and visualises them on the map surface. These web cams don’t normally show an animated history, the Azure worker process caches a set number of frames for Silverlight to render. A simple playback loop animates the map view between the cameras.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;How to get started&lt;/h3&gt;  &lt;p&gt;We hope you enjoyed the session are keen to get started, &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Join the CTP today: &lt;a href="http://connect.microsoft.com/silverlightmapcontrolctp"&gt;http://connect.microsoft.com/silverlightmapcontrolctp&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Learn Silverlight: &lt;a href="http://silverlight.net/Learn/"&gt;http://silverlight.net/Learn/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Download DeepEarth tools: &lt;a href="http://deepearth.codeplex.com/"&gt;http://deepearth.codeplex.com/&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/632/Bing-your-data-to-life-the-Bing-Maps-Silverlight-control.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/632/Bing-your-data-to-life-the-Bing-Maps-Silverlight-control.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/632/Bing-your-data-to-life-the-Bing-Maps-Silverlight-control.aspx</guid>
      <pubDate>Tue, 08 Sep 2009 14:17:53 GMT</pubDate>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=632</trackback:ping>
    </item>
    <item>
      <title>Bing Maps Silverlight Multi touch @ Aussie Partner Conference</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;Sarah Vaughan, the Windows 7 Group Lead in Australia, today demonstrated our Silverlight 3 / Windows 7 Multi touch application in the keynote of the Australian Partner Conference.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SarahAPCKeynote" border="0" alt="SarahAPCKeynote" src="/Portals/0/Blog/Files/8/631/WLW-BingMapsSilverlightMultitouchAussiePartn_C919-SarahAPCKeynote_360c70ca-1ed0-46d1-bd13-32d2e9ce008d.jpg" width="604" height="481" /&gt; &lt;/p&gt;  &lt;p&gt;The Silverlight application is built on top of Bing Maps and uses our open source controls called &lt;a href="http://deepearth.codeplex.com/" target="_blank"&gt;DeepEarth&lt;/a&gt;. This particular application allows you to annotate the map, drawing polygons and lines and adding points. All of this data can be captured and stored into a SQL 2008 database. We added a custom tile layer of the exhibition venue itself.&lt;/p&gt;  &lt;p&gt;In order to support multi touch you need to be running Windows7 and have a multi touch enabled screen and drivers. HP, the hardware sponsors of the event supplied the nice screen Sarah is using and also lent us a TouchSmart Tx2 tablet for the development.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you have such a device you can see the application here (works with just a mouse as well):&lt;/p&gt;  &lt;p&gt;&lt;a title="http://multitouch.soulsolutions.com.au/" href="http://multitouch.soulsolutions.com.au/"&gt;http://multitouch.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The gestures are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;pinch zoom in / out&lt;/li&gt;    &lt;li&gt;2 finger swipe left / right to show / hide the drawing panel&lt;/li&gt;    &lt;li&gt;2 finger hold 1/2 sec for AerialwithLabels, 3 finger hold for road, 4 for plain aerial.&lt;/li&gt;    &lt;li&gt;Drag the map with one finger.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One thing to note is that multi touch doesn’t currently work in full screen mode.&lt;/p&gt;  &lt;p&gt;Commercially we are working with a Mining Company here in Queensland and a Utilities company in Melbourne to really push this technology for OH&amp;S reporting and as broader GIS visualisation and business intelligence application across the organisation.&lt;/p&gt;  &lt;p&gt;If you’re attending &lt;a href="http://www.msteched.com/australia/Public/default.aspx" target="_blank"&gt;Teched Australia&lt;/a&gt; next week make sure to come to our session “WEB 302 – Bing your data to life” on Wednesday at 13:45 to see how you can create these applications with your data and more.&lt;/p&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/631/Bing-Maps-Silverlight-Multi-touch-Aussie-Partner-Conference.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/631/Bing-Maps-Silverlight-Multi-touch-Aussie-Partner-Conference.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/631/Bing-Maps-Silverlight-Multi-touch-Aussie-Partner-Conference.aspx</guid>
      <pubDate>Thu, 03 Sep 2009 04:18:08 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=631</trackback:ping>
    </item>
    <item>
      <title>We’re speaking at Tech.Ed Australia 09</title>
      <description>&lt;p&gt;&lt;a href="http://www.soulsolutions.com.au/Portals/0/Blog/Files/8/630/WLW-WerespeakingatTech.EdAustralia09_A8F8-120x90_CMeSpeak_2.jpg"&gt;&lt;img title="120x90_CMeSpeak" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 10px 0px; border-right-width: 0px" height="94" alt="120x90_CMeSpeak" src="/Portals/0/Blog/Files/8/630/WLW-WerespeakingatTech.EdAustralia09_A8F8-120x90_CMeSpeak_thumb.jpg" width="124" align="left" border="0" /&gt;&lt;/a&gt;&lt;img height="40" src="/Portals/0/BronwenWeeGo.jpg" width="30" /&gt;&lt;img height="44" src="/Portals/0/johnWeeGo.jpg" width="30" /&gt; Just an update to the sessions we’re presenting and activities we’re involved in at Tech.Ed Australia this year on the Gold Coast. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;WEB 302 - Bing your data to life, the Virtual Earth Silverlight control  Wed 9/9/2009 13:45-15:00 in Meeting Room 7      &lt;br /&gt;&lt;/strong&gt;Bing Maps (formerly Virtual Earth) provides a slick and powerful data visualisation engine for your spatial information. Join John O'Brien for a look at how the core control can be combined with other Silverlight components including DeepEarth and Photosynth to produce a rich and engaging interface. See how SQL Server 2008 spatial data can be rendered in real time and how this whole interface can be integrated into your Sharepoint site. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;THG007 - 3 the New Windows Live Messenger Web Toolkit for Social Websites Thu 10/9/2009 15:00-15:30 in Green Interactive Theatre&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;See how to add IM to a site with the Windows Live Messenger Library and UI Controls, and how to build new relationships around content with Messenger social capabilities. Also hear how top sites and marketers are using the social connections of Windows Live users to grow and build brand loyalty. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;WIT Women in IT Wed 9/9/2009 12:45-13:45&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Hosted by Catherine Eibner, Developer Evangelist for Microsoft Dynamics, Women in IT is about growing strong female leaders in the IT industry. Leading women in IT and industry experts will lead discussions on a variety of topics, including finding ways to better support female IT talent. The Women in IT session will be run as a fully interactive workshop, with the help of LEGO® SERIOUS PLAY (LSP) through Robert Rasmussen &amp; Associates. Using LEGO® Bricks the group will work together to model solutions for growing strong female leaders in the IT industry. Come along and make the most of the Microsoft Women in IT community. Anyone who would like to attend is welcome - men included. To register your interest, simply add the Women in IT session and lunch to your agenda in the session builder.  &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Girl Geek Dinner 7 Wed 9/9/2009 19:30-late &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Details:&lt;a title="http://girlgeekdinnersbrisbane07.eventbrite.com/" href="http://girlgeekdinnersbrisbane07.eventbrite.com/"&gt;http://girlgeekdinnersbrisbane07.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f3316d92-9766-4562-92ef-31679f34872f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Tech.Ed" rel="tag"&gt;Tech.Ed&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Australia" rel="tag"&gt;Australia&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bing+Maps" rel="tag"&gt;Bing Maps&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live+Messenger" rel="tag"&gt;Live Messenger&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Lego+Serious+Play" rel="tag"&gt;Lego Serious Play&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WIT" rel="tag"&gt;WIT&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Girl+Geek+Dinners" rel="tag"&gt;Girl Geek Dinners&lt;/a&gt;&lt;/div&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/630/We-rsquo-re-speaking-at-Tech-Ed-Australia-09.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/630/We-rsquo-re-speaking-at-Tech-Ed-Australia-09.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/630/We-rsquo-re-speaking-at-Tech-Ed-Australia-09.aspx</guid>
      <pubDate>Thu, 27 Aug 2009 02:01:02 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=630</trackback:ping>
    </item>
    <item>
      <title>Photosynth natively on Bing Maps Silverlight</title>
      <description>&lt;p&gt;&lt;img src="http://soulsolutions.com.au/Portals/0/johnWeeGo.jpg" /&gt; We the release of Silverlight3 I thought I would share this skunk works project I have been working on. We have the Photosynth Silverlight control running inside our Silverlight3 application. We pull all the geo-referenced synths and display them on a Bing Maps CTP Silverlight control. You will see two types of icons, the big ones are clusters with many synth, zoom in till you get a smaller leaf, click on this to load the synth using some Silverlight3 magic.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://photosynth.soulsolutions.com.au/" href="http://photosynth.soulsolutions.com.au/"&gt;http://photosynth.soulsolutions.com.au/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://photosynth.soulsolutions.com.au/" target="_blank"&gt;&lt;img title="synthview" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="synthview" src="/Portals/0/Blog/Files/8/616/WLW-PhotosynthnativelyonBingMapsSilverlight_E46F-synthview_033bc6bd-de7c-487f-a967-b61f9940894a.jpg" width="604" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://photosynth.soulsolutions.com.au/" target="_blank"&gt;&lt;img title="mapview" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="404" alt="mapview" src="/Portals/0/Blog/Files/8/616/WLW-PhotosynthnativelyonBingMapsSilverlight_E46F-mapview_d7857aec-3726-4601-94e3-4a493a0ffdb7.jpg" width="604" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So go and explore all the public synths throughout the world! My favourites are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Pyramids at Giza&lt;/li&gt;    &lt;li&gt;Machu Pichu Peru&lt;/li&gt;    &lt;li&gt;London Eye&lt;/li&gt;    &lt;li&gt;Mount Rushmore&lt;/li&gt;    &lt;li&gt;Statue of Liberty&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Let me know what you think of the more integrated experience and how you think Photosynth should be better integrated spatially.&lt;/p&gt;  &lt;p&gt;What are your favourite locations?&lt;/p&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/616/Photosynth-natively-on-Bing-Maps-Silverlight.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/616/Photosynth-natively-on-Bing-Maps-Silverlight.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/616/Photosynth-natively-on-Bing-Maps-Silverlight.aspx</guid>
      <pubDate>Fri, 17 Jul 2009 06:14:51 GMT</pubDate>
      <slash:comments>16</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=616</trackback:ping>
    </item>
    <item>
      <title>Traffic in the Cloud, powered by Bing Maps Silverlight and DeepEarth</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="http://soulsolutions.com.au/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;I’m pleased to announced my project has launched for the Azure #newcloudapp international competition. Its called &lt;a href="http://tc.soulsolutions.com.au/" target="_blank"&gt;Traffic in the Cloud&lt;/a&gt; and provides a rich interactive location twist on public webcams throughout the world.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://tc.soulsolutions.com.au/" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="TrafficInTheCloud" border="0" alt="TrafficInTheCloud" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-TrafficInTheCloud_49adb45c-50a5-45d0-9faf-6c40732069c2.jpg" width="604" height="366" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So what makes this new and worth checking out? Well apart from the slick DeepZoom Silverlight control  (you need another reason?) here is why:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Give context to the camera images, browse by location and see what is happening live around the world. &lt;/li&gt;    &lt;li&gt;Sit back and enjoy a tour around the world. &lt;/li&gt;    &lt;li&gt;An Azure worker process caches 10 frames of each camera so you can now add some motion to your view even if the source website doesn’t. &lt;/li&gt;    &lt;li&gt;Those frames are made into a sprite as recommended by &lt;a href="http://www.cynergysystems.com/blogs/page/josefajardo" target="_blank"&gt;Jose Farjardo&lt;/a&gt; which means CPU usage and scalability rocks &lt;/li&gt;    &lt;li&gt;You can &lt;a href="http://tc.soulsolutions.com.au/add.aspx" target="_blank"&gt;add your own cameras&lt;/a&gt; by signing in with a LiveID and filling out a simple form (Approval is needed before it goes live) &lt;/li&gt;    &lt;li&gt;All the controls used are available open source from the &lt;a href="http://deepearth.codeplex.com/" target="_blank"&gt;DeepEarth project on Codeplex&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;The image pins use PowerLaw scaling automatically deploying into the camera sprite animation based on Zoomlevel and being in your current view to give a slick experience. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;Why run in Azure, couldn’t this just be hosted anywhere?&lt;/h3&gt;  &lt;p&gt;In short no, this application has the potential to scale to host every public webcam in the world, or it could go nowhere. Only a cloud solution that has the ability to scale beyond the limits of a single server and even a single web farm while only requiring you to consume what you now can allow this. The components of the application are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight UI. This file is downloaded and executed on the client allowing the rich interactivity to scale beyond the limits of the hosting server. &lt;/li&gt;    &lt;li&gt;Bing Maps for Enterprise serves the map data from its Content Delivery Network around the globe giving you the best imagery and experience with no impact on the hosting server. &lt;/li&gt;    &lt;li&gt;The WCF service providing the locations and metadata of the camera is hosted in an Azure Web Role with no state, we can add as many of these roles as we need. &lt;/li&gt;    &lt;li&gt;The webcam images themselves are polled once and cached as a sprite image in Azure Blob storage allowing us to directly reference the images on the web. &lt;/li&gt;    &lt;li&gt;The webcam metadata is stored in an Azure Table, one camera per row. &lt;/li&gt;    &lt;li&gt;The polling service is an Azure Worker Role and this is where the smart part of this application lies. Again we can add as many workers as we need. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;How do I add my camera?&lt;/h3&gt;  &lt;p&gt;Visit: &lt;a title="http://tc.soulsolutions.com.au/add.aspx" href="http://tc.soulsolutions.com.au/add.aspx"&gt;http://tc.soulsolutions.com.au/add.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You will need to sign in using your existing LiveID or make a new one. All we get when you log in is a GUID to identify you, that’s all. We use this to let you manage your webcams and later we could add new features just for you. For example, a personal tour or embed link of just your cameras.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="exampleaddcamera" border="0" alt="exampleaddcamera" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-exampleaddcamera_8cb37fd8-b2ad-4253-b370-0223cdeb8ef2.jpg" width="604" height="422" /&gt; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Camera Image URL. This is the full image URL of the actual webcam image, we only only support images. The program doesn’t have browser cache issues so no need for timestamp parameters. &lt;/li&gt;    &lt;li&gt;Source Webpage URL. Give credit for the source of the webcam so we can link back to them for users wanting to know more. &lt;/li&gt;    &lt;li&gt;Title of Camera. &lt;/li&gt;    &lt;li&gt;Description. &lt;/li&gt;    &lt;li&gt;Latitude (Decimal Degrees). Why not use &lt;a href="http://www.soulsolutions.com.au/Tools/LocationChooser.aspx" target="_blank"&gt;my Location Chooser&lt;/a&gt; if you don’t know your GPS co-ordinates? &lt;/li&gt;    &lt;li&gt;Longitude (Decimal Degrees). &lt;/li&gt;    &lt;li&gt;Heading (Degrees). North is 0, East is 90, South is 180 and West is 270. When we have the full power of Silverlight3 perspective 3D we can give an even better experience here. &lt;/li&gt;    &lt;li&gt;Refresh Frequency of camera (seconds). Typically 60 seconds. &lt;/li&gt;    &lt;li&gt;Total Frames to replay. Typically 10, @60 seconds that will give 10min snapshot. &lt;/li&gt;    &lt;li&gt;Height of image (pixels). As sometimes the cameras go offline and show a different sized image we need this specified. &lt;/li&gt;    &lt;li&gt;Width of image (pixels). We should create a little helper for this soon however. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;When you save it will be stored in your dropdown of cameras but won’t appear on the map straight away. One of our Moderators will need to review the settings you provided and set it to approved. This normally takes a few hours at most. If you edit an approved camera it will also be taken offline and again moderated. We appreciate your patience and I’m sure you understand we don’t want this service abused.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How about some more information into the actual code behind all this?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h3&gt;The Azure Worker Role&lt;/h3&gt;  &lt;p&gt;An Azure Worker Role is essentially a thread looping forever. You have one implementation of your logic and many, many instances as required. The normal communication channel to distribute the work is an Azure Message Queue. Typically you add stuff to be done to the queue, the hungry workers get them and process them as fast as they can. If your queue gets large you need to add more workers. Importantly the architecture behind Azure allows workers to die or be added at any time, if the message they were processing isn’t completed in satisfactory time it reappears on the queue. Additionally you can’t rely on the Table Storage for synchronising workers as updates can take some time to propagate through the replicated storage.&lt;/p&gt;  &lt;p&gt;Now in this application we are working with time. We want a camera to be polled every XX seconds. We don’t want to complicate things with multiple queues or extra tables. I was stumped until I sat down with &lt;a href="http://jcooney.net/" target="_blank"&gt;Joseph Cooney&lt;/a&gt;, &lt;a href="http://soulsolutions.com.au/blog.aspx" target="_blank"&gt;Bronwen Zande&lt;/a&gt; and &lt;a href="http://callvirt.net/Blog/" target="_blank"&gt;Joel Pobar&lt;/a&gt; and explained the problem over &lt;a href="http://www.bing.com/images/search?q=laksa" target="_blank"&gt;laksa&lt;/a&gt;. The solution is quite elegant:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A single queue of all image jobs to be processed, a worker is both a consumer and a producer.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Essentially the worker takes the job off the queue, processes it and then puts the next job on the queue before confirming it has completed the original job. Each job contains a timestamp for when the job should be executed, if it is taken off the queue too early the worker process puts it back. The trick to working out your capacity is no longer how many jobs are on the queue (as this will roughly equal the total number of webcams) but rather the desired processing time versus the actual time an image was processed.&lt;/p&gt;  &lt;p&gt;Here is the code:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;while &lt;/span&gt;(&lt;span style="color: blue"&gt;true&lt;/span&gt;)
{
    &lt;span style="color: blue"&gt;try
    &lt;/span&gt;{
        &lt;span style="color: #2b91af"&gt;Message &lt;/span&gt;msg = imagequeue.GetMessage(&lt;span style="color: #2b91af"&gt;Constants&lt;/span&gt;.SecondsToExecuteJob);
        &lt;span style="color: blue"&gt;if &lt;/span&gt;(msg != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color: blue"&gt;var &lt;/span&gt;newjob = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ImageJob&lt;/span&gt;(msg.ContentAsBytes());
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(newjob.TimeStamp.CompareTo(&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now) &lt; 0)
            {
                &lt;span style="color: green"&gt;//update timestamp
                &lt;/span&gt;newjob.TimeStamp = &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now.AddSeconds(newjob.RefreshSeconds);

                &lt;span style="color: green"&gt;//process
                &lt;/span&gt;processImage(newjob, container);
            }
            &lt;span style="color: green"&gt;//remove since we have completed successfully
            &lt;/span&gt;imagequeue.DeleteMessage(msg);
            &lt;span style="color: green"&gt;//and put back onto the queue
            &lt;/span&gt;imagequeue.PutMessage(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Message&lt;/span&gt;(newjob.ToXML()));
        }
        &lt;span style="color: blue"&gt;else
        &lt;/span&gt;{
            &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(1000);
        }
    }
    &lt;span style="color: blue"&gt;catch &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Exception &lt;/span&gt;e)
    {
        &lt;span style="color: #2b91af"&gt;RoleManager&lt;/span&gt;.WriteToLog(&lt;span style="color: #2b91af"&gt;Constants&lt;/span&gt;.Critical,
                               &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"Exception when processing queue item. Message: '{0}'"&lt;/span&gt;,
                                             e.Message));
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;Cached Sprite&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://tcs.blob.core.windows.net/images/147c2e66-9382-4522-8188-cec130fab7be.jpg" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="spriteexample" border="0" alt="spriteexample" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-spriteexample_d1e9438c-c359-4230-ba22-639a2ca32a76.jpg" width="604" height="49" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The idea of this application is to provide an improved experience and features by combining new technology with aggregated data. The webcam images remain the property of the source, we don’t want to store these images and run into legal issues, instead we cache just the last XX images in a single publically addressable image sprite. These sprites use incredibly low cpu usage when animated in Silverlight, I tested 10 of these running at 1-2% cpu for the whole Silverlight application. I have to thank &lt;a href="http://www.cynergysystems.com/blogs/page/josefajardo" target="_blank"&gt;Jose Farjardo&lt;/a&gt; who suggested this in &lt;a href="http://www.microsoft.com/australia/remix/videos/video.aspx?vid=v24#" target="_blank"&gt;his remix Australia talk last month&lt;/a&gt;. This is the code I used:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;Begin()
{
    &lt;span style="color: blue"&gt;var &lt;/span&gt;element = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Rectangle
                      &lt;/span&gt;{
                          Width = Width,
                          Height = Height
                      };

    &lt;span style="color: blue"&gt;var &lt;/span&gt;spriteSheet = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ImageBrush
                          &lt;/span&gt;{
                              Stretch = &lt;span style="color: #2b91af"&gt;Stretch&lt;/span&gt;.None,
                              AlignmentX = &lt;span style="color: #2b91af"&gt;AlignmentX&lt;/span&gt;.Left,
                              AlignmentY = &lt;span style="color: #2b91af"&gt;AlignmentY&lt;/span&gt;.Top
                          };

    &lt;span style="color: blue"&gt;var &lt;/span&gt;sprite_sheet_position = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TranslateTransform&lt;/span&gt;();
    spriteSheet.Transform = sprite_sheet_position;
    spriteSheet.ImageSource = ImageSource;

    element.Fill = spriteSheet;

    &lt;span style="color: blue"&gt;var &lt;/span&gt;sprite_anim = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DoubleAnimationUsingKeyFrames&lt;/span&gt;();
    &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &lt; Frames; i++)
    {
        &lt;span style="color: blue"&gt;var &lt;/span&gt;frame_span = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpan&lt;/span&gt;(0, 0, 0, 0, i*MilliSecondsPerFrame);
        sprite_anim.KeyFrames.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DiscreteDoubleKeyFrame
                                      &lt;/span&gt;{
                                          Value = (-Width*((Frames-i)-1)),
                                          KeyTime = &lt;span style="color: #2b91af"&gt;KeyTime&lt;/span&gt;.FromTimeSpan(frame_span)
                                      });
    }

    sb = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Storyboard &lt;/span&gt;{RepeatBehavior = &lt;span style="color: #2b91af"&gt;RepeatBehavior&lt;/span&gt;.Forever};
    sb.Children.Add(sprite_anim);
    &lt;span style="color: #2b91af"&gt;Storyboard&lt;/span&gt;.SetTarget(sprite_anim, sprite_sheet_position);
    &lt;span style="color: #2b91af"&gt;Storyboard&lt;/span&gt;.SetTargetProperty(sprite_anim,
                                 &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PropertyPath&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;TranslateTransform&lt;/span&gt;.XProperty));
    sb.Begin();

    LayoutRoot.Children.Add(element);
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;DeepEarth&lt;/h3&gt;

&lt;p&gt;Regular readers of my blog know we have been working with Silverlight DeepZoom and mapping since the dawn of time (Mix2008) and have had a great many people contribute to the project on codeplex. The DeepEarth project has evolved into a toolkit of Silverlight controls and components for mapping. With the released of the Bing Maps Silverlight CTP we have been busy make our controls compatible, extensible and blendable. Lets take a look at the controls used in this application and how you can use them in your application as well.&lt;/p&gt;

&lt;h4&gt;Navigation Control&lt;/h4&gt;

&lt;p&gt;&lt;a title="http://deepearth.codeplex.com/Wiki/View.aspx?title=Navigation%20Panel" href="http://deepearth.codeplex.com/Wiki/View.aspx?title=Navigation%20Panel"&gt;http://deepearth.codeplex.com/Wiki/View.aspx?title=Navigation%20Panel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="NavPanelWithContent" border="0" alt="NavPanelWithContent" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-NavPanelWithContent_cb82fa52-7ee2-4f2c-aa94-5d913bd6d045.jpg" width="300" height="193" /&gt; &lt;/p&gt;

&lt;p&gt;Custom navigation control with pan and zoom controls and a panel for custom functionality, simple add what content you'd like to have on the horizontal arm inside a panel as a child element.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;n&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NavigationPanel &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="navpanel" &lt;/span&gt;&lt;span style="color: red"&gt;MapName&lt;/span&gt;&lt;span style="color: blue"&gt;="map" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Left" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Top" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="8,8,8,8" &gt;
    &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel &lt;/span&gt;&lt;span style="color: red"&gt;Orientation&lt;/span&gt;&lt;span style="color: blue"&gt;="Horizontal"&gt;
        &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="btnPlay" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="btnPlay_Click"  &lt;/span&gt;&lt;span style="color: red"&gt;ToolTipService.ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;="Play" &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;StandardButton&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="4,8,4,8"&gt;
            &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;="Resources/play.png" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="24" /&gt;
        &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
        &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="btnPause" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="btnPause_Click" &lt;/span&gt;&lt;span style="color: red"&gt;Visibility&lt;/span&gt;&lt;span style="color: blue"&gt;="Collapsed" &lt;/span&gt;&lt;span style="color: red"&gt;ToolTipService.ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;="Pause" &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;StandardButton&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="4,8,4,8"&gt;
            &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;="Resources/pause.png" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="24" /&gt;
        &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
        &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="btnAdd" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="btnAdd_Click" &lt;/span&gt;&lt;span style="color: red"&gt;ToolTipService.ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;="Add a camera" &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;StandardButton&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="4,8,4,8"&gt;
            &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;="Resources/plus.png" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="24" /&gt;
        &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
        &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="btnAbout" &lt;/span&gt;&lt;span style="color: red"&gt;Click&lt;/span&gt;&lt;span style="color: blue"&gt;="btnAbout_Click" &lt;/span&gt;&lt;span style="color: red"&gt;ToolTipService.ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;="About this application" &lt;/span&gt;&lt;span style="color: red"&gt;Style&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;StaticResource &lt;/span&gt;&lt;span style="color: red"&gt;StandardButton&lt;/span&gt;&lt;span style="color: blue"&gt;}" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="4,8,4,8"&gt;
            &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Image &lt;/span&gt;&lt;span style="color: red"&gt;Source&lt;/span&gt;&lt;span style="color: blue"&gt;="Resources/info.png" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="24" &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="24" /&gt;
        &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
    &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;n&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;NavigationPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h4&gt;MiniMap&lt;/h4&gt;

&lt;p&gt;&lt;a title="http://deepearth.codeplex.com/Wiki/View.aspx?title=Mini%20Map%20Panel" href="http://deepearth.codeplex.com/Wiki/View.aspx?title=Mini%20Map%20Panel"&gt;http://deepearth.codeplex.com/Wiki/View.aspx?title=Mini%20Map%20Panel&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="minimap" border="0" alt="minimap" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-minimap_49e13c12-b801-4a73-b307-602fe83ce068.jpg" width="218" height="224" /&gt; &lt;/p&gt;

&lt;p&gt;Second Map control to provide overview location of main map and full navigation. &lt;a href="http://www.earthware.co.uk/blog/index.php/2009/03/virtual-earth-silverlight-minimap-tutorial/" target="_blank"&gt;Brian from Earthware authored the first version here&lt;/a&gt;.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;mm&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;MiniMap &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="minimap" &lt;/span&gt;&lt;span style="color: red"&gt;MapName&lt;/span&gt;&lt;span style="color: blue"&gt;="map" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Right" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Top" /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h4&gt;Coordinate Panel&lt;/h4&gt;

&lt;p&gt;&lt;a title="http://deepearth.codeplex.com/Wiki/View.aspx?title=Coordinate%20Panel" href="http://deepearth.codeplex.com/Wiki/View.aspx?title=Coordinate%20Panel"&gt;http://deepearth.codeplex.com/Wiki/View.aspx?title=Coordinate%20Panel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CoordinatePanel" border="0" alt="CoordinatePanel" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-CoordinatePanel_31d8bc7a-3d9e-4fa5-9bfe-e88948fc78fe.png" width="253" height="34" /&gt; &lt;/p&gt;

&lt;p&gt;The coordinate panel displays current coordinate information for the mouse position.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;c&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;CoordinatePanel &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="coord" &lt;/span&gt;&lt;span style="color: red"&gt;MapName&lt;/span&gt;&lt;span style="color: blue"&gt;="map" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Right" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Bottom" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="8,8,8,8" /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h4&gt;Scale Panel&lt;/h4&gt;

&lt;p&gt;&lt;a title="http://deepearth.codeplex.com/Wiki/View.aspx?title=Scale%20Panel" href="http://deepearth.codeplex.com/Wiki/View.aspx?title=Scale%20Panel"&gt;http://deepearth.codeplex.com/Wiki/View.aspx?title=Scale%20Panel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ScalePanel" border="0" alt="ScalePanel" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-ScalePanel_81dd3f77-4cac-4d1e-b597-a2ebed596f48.jpg" width="258" height="42" /&gt; &lt;/p&gt;

&lt;p&gt;Information Panel showing the current scale of the map.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;s&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScalePanel &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="scalepanel" &lt;/span&gt;&lt;span style="color: red"&gt;MapName&lt;/span&gt;&lt;span style="color: blue"&gt;="map" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Right" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Bottom" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="8,8,8,41" /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h4&gt;Persistent State&lt;/h4&gt;

&lt;p&gt;&lt;a title="http://deepearth.codeplex.com/Wiki/View.aspx?title=Persisted%20State%20Control" href="http://deepearth.codeplex.com/Wiki/View.aspx?title=Persisted%20State%20Control"&gt;http://deepearth.codeplex.com/Wiki/View.aspx?title=Persisted%20State%20Control&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Non visual control to maintain the users state between sessions. Uses the Isolated Storage in Silverlight to store a serialized object contain view and mode values.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h4&gt;DeepEarth Logo&lt;/h4&gt;

&lt;p&gt;&lt;a title="http://deepearth.codeplex.com/Wiki/View.aspx?title=DeepEarth%20Logo%20Control" href="http://deepearth.codeplex.com/Wiki/View.aspx?title=DeepEarth%20Logo%20Control"&gt;http://deepearth.codeplex.com/Wiki/View.aspx?title=DeepEarth%20Logo%20Control&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DELogoOnMap" border="0" alt="DELogoOnMap" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-DELogoOnMap_4019f412-fa5d-4498-9304-ac738491dc95.jpg" width="48" height="50" /&gt; &lt;/p&gt;

&lt;p&gt;A simple helper control to easily add the most current DeepEarth logo and link to your application in support of this project.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;l&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Logo &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="logo" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Left" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Bottom" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="80,8,8,8" /&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;Vote for Traffic in the Cloud!&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.newcloudapp.com/vote.aspx" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="votetc" border="0" alt="votetc" src="/Portals/0/Blog/Files/8/615/WLW-TrafficintheCloudpoweredbyBingMapsSilver_10E4D-votetc_a6fe903d-a27d-463d-b745-c55d18dfbd80.jpg" width="230" height="83" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If you like the application then give it your vote over at &lt;a title="http://www.newcloudapp.com/vote.aspx" href="http://www.newcloudapp.com/vote.aspx"&gt;http://www.newcloudapp.com/vote.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Its under John OBrien, about half way down the list of other cool apps.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;Future Enhancements&lt;/h3&gt;

&lt;p&gt;What would you like to see? let me know in the comments, here are my ideas in no specific order.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Location chooser on the add page powered by Bing maps, rather then having to enter your lat/long and also to double check and adjust (fine tune) &lt;/li&gt;

  &lt;li&gt;Image URL validation, show the image you have supplied and also automatically fill out the height and width. &lt;/li&gt;

  &lt;li&gt;Links overlaid on the sprite to link back to the original source, plus permalink options / embed links etc. &lt;/li&gt;

  &lt;li&gt;Permalink for each camera &lt;/li&gt;

  &lt;li&gt;&lt;strike&gt;Tour mode, automatic navigation slideshow around the world&lt;/strike&gt; &lt;/li&gt;

  &lt;li&gt;Statistics, number of views per camera &lt;/li&gt;

  &lt;li&gt;View just your cameras on the map, permalink and optimised starting point. &lt;/li&gt;

  &lt;li&gt;Embed snippet to put the map on your site. &lt;/li&gt;

  &lt;li&gt;Refresh of sprite within map so you can sit on specific camera &lt;/li&gt;

  &lt;li&gt;Find control, both general locations and locations with cameras &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Silverlight 3 upgrade &lt;strike&gt;(when released)&lt;/strike&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;perspective 3D to give context to heading of camera &lt;/li&gt;

  &lt;li&gt;pixel shader effects during transition &lt;/li&gt;

  &lt;li&gt;refactor popout effect as a behaviour &lt;/li&gt;
&lt;/ul&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/615/Traffic-in-the-Cloud-powered-by-Bing-Maps-Silverlight-and-DeepEarth.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/615/Traffic-in-the-Cloud-powered-by-Bing-Maps-Silverlight-and-DeepEarth.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/615/Traffic-in-the-Cloud-powered-by-Bing-Maps-Silverlight-and-DeepEarth.aspx</guid>
      <pubDate>Fri, 10 Jul 2009 20:55:37 GMT</pubDate>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=615</trackback:ping>
    </item>
    <item>
      <title>List of links to all the SQL 2008 Spatial Methods</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;I always struggle to find the full list of SQL 2008 Spatial methods for Geography when I need them so this is really just a helper post so I can find them again later but maybe it will help you also. Since they are case sensitive and don’t have intelisence I can never remember the syntax.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933967.aspx"&gt;STArea&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933912.aspx"&gt;STAsBinary&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933970.aspx"&gt;STAsText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933965.aspx"&gt;STBuffer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933819.aspx"&gt;STDifference&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933840.aspx"&gt;STDimension&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933911.aspx"&gt;STDisjoint&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933808.aspx"&gt;STDistance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933905.aspx"&gt;STEndpoint&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933809.aspx"&gt;STEquals&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933849.aspx"&gt;STGeometryN&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933837.aspx"&gt;STGeometryType&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933901.aspx"&gt;STIntersection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933962.aspx"&gt;STIntersects&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933983.aspx"&gt;STIsClosed&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933846.aspx"&gt;STIsEmpty&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933895.aspx"&gt;STLength&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933886.aspx"&gt;STNumGeometries&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933827.aspx"&gt;STNumPoints&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933844.aspx"&gt;STPointN&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933887.aspx"&gt;STSrid&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933900.aspx"&gt;STStartPoint&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933903.aspx"&gt;STSymDifference&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933914.aspx"&gt;STUnion&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933884.aspx"&gt;AsGml&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933981.aspx"&gt;AsTextZM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933987.aspx"&gt;BufferWithTolerance&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933822.aspx"&gt;InstanceOf&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933959.aspx"&gt;IsNull&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933806.aspx"&gt;Lat&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933958.aspx"&gt;Long&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933966.aspx"&gt;M&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933812.aspx"&gt;NumRing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933830.aspx"&gt;RingN&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933803.aspx"&gt;ToString&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933913.aspx"&gt;Z&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933834.aspx"&gt;STGeomFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933979.aspx"&gt;STPointFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933976.aspx"&gt;STLineFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933971.aspx"&gt;STPolyFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933997.aspx"&gt;STMPointFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933883.aspx"&gt;STMLineFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933816.aspx"&gt;STMPolyFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933919.aspx"&gt;STGeomCollFromText&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933897.aspx"&gt;STGeomFromWKB&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933954.aspx"&gt;STPointFromWKB&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933906.aspx"&gt;STLineFromWKB&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933969.aspx"&gt;STPolyFromWKB&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933984.aspx"&gt;STMPointFromWKB&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933807.aspx"&gt;STMLineFromWKB&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933961.aspx"&gt;STMPolyFromWKB&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933842.aspx"&gt;GeomFromGML&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933956.aspx"&gt;Null&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933824.aspx"&gt;Parse&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb933811.aspx"&gt;Point&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And from &lt;a title="http://sqlspatialtools.codeplex.com" href="http://sqlspatialtools.codeplex.com"&gt;http://sqlspatialtools.codeplex.com&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Functions&lt;/h3&gt; These static methods, implemented in the class &lt;i&gt;Functions&lt;/i&gt;, can both be registered in SQL Server and used through T-SQL, as well as be used directly from the CLR:  &lt;br /&gt;&lt;u&gt;bool &lt;b&gt;IsValidGeographyFromGeometry&lt;/b&gt;(SqlGeometry geometry)&lt;/u&gt;  &lt;br /&gt;Check if an input geometry can represent a valid geography without throwing an exception.  &lt;br /&gt;This function requires that the geometry be in longitude/latitude coordinates and that  &lt;br /&gt;those coordinates are in correct order in the geometry instance (i.e. latitude/longitude  &lt;br /&gt;not longitude/latitude). This function will return false (0) if the input geometry is not  &lt;br /&gt;in the correct latitude/longitude format, including a valid geography SRID.  &lt;br /&gt;&lt;u&gt;bool &lt;b&gt;IsValidGeographyFromText&lt;/b&gt;(string inputWKT, int srid)&lt;/u&gt;  &lt;br /&gt;Check if an input WKT can represent a valid geography. This function requires that  &lt;br /&gt;the WTK coordinate values are longitude/latitude values, in that order and that a valid  &lt;br /&gt;geography SRID value is supplied. This function will not throw an exception even in  &lt;br /&gt;edge conditions (i.e. longitude/latitude coordinates are reversed to latitude/longitude).  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;MakeValidGeographyFromGeometry&lt;/b&gt;(SqlGeometry geometry)&lt;/u&gt;  &lt;br /&gt;Convert an input geometry instance to a valid geography instance.  &lt;br /&gt;This function requires that the WKT coordinate values are longitude/latitude values,  &lt;br /&gt;in that order and that a valid geography SRID value is supplied.  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;MakeValidGeographyFromText&lt;/b&gt;(string inputWKT, int srid)&lt;/u&gt;  &lt;br /&gt;Convert an input WKT to a valid geography instance.  &lt;br /&gt;This function requires that the WKT coordinate values are longitude/latitude values,  &lt;br /&gt;in that order and that a valid geography SRID value is supplied.  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;ConvexHullGeography&lt;/b&gt;(SqlGeography geography)&lt;/u&gt;  &lt;br /&gt;Computes ConvexHull of input geography and returns a polygon (unless all input points are colinear).  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;ConvexHullGeographyFromText&lt;/b&gt;(string inputWKT, int srid)&lt;/u&gt;  &lt;br /&gt;Computes ConvexHull of input WKT and returns a polygon (unless all input points are colinear).  &lt;br /&gt;This function does not require its input to be a valid geography. This function does require  &lt;br /&gt;that the WKT coordinate values are longitude/latitude values, in that order and that a valid  &lt;br /&gt;geography SRID value is supplied.  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;DensifyGeography&lt;/b&gt;(SqlGeography g, double maxAngle)&lt;/u&gt;  &lt;br /&gt;Returns a &lt;i&gt;geography&lt;/i&gt; instance equivalent to its input, but with no two consecutive points spaced more than &lt;i&gt;maxAngle&lt;/i&gt; apart.  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;InterpolateBetweenGeog&lt;/b&gt;(SqlGeography start, SqlGeography end, double distance)&lt;/u&gt;  &lt;br /&gt;Takes start and end &lt;i&gt;geography&lt;/i&gt; points and returns a new point that is a given distance from the start toward the end.  &lt;br /&gt;&lt;u&gt;SqlGeometry &lt;b&gt;InterpolateBetweenGeom&lt;/b&gt;(SqlGeometry start, SqlGeometry end, double distance)&lt;/u&gt;  &lt;br /&gt;Takes start and end &lt;i&gt;geometry&lt;/i&gt; points and returns a new point that is a given distance from the start toward the end.  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;LocateAlongGeog&lt;/b&gt;(SqlGeography g, double distance)&lt;/u&gt;  &lt;br /&gt;Takes a &lt;i&gt;geography&lt;/i&gt; linestring and finds the point a given distance along it.  &lt;br /&gt;&lt;u&gt;SqlGeometry &lt;b&gt;LocateAlongGeom&lt;/b&gt;(SqlGeometry g, double distance)&lt;/u&gt;  &lt;br /&gt;Takes a &lt;i&gt;geometry&lt;/i&gt; linestring and finds the point a given distance along it.  &lt;br /&gt;&lt;u&gt;SqlGeometry &lt;b&gt;ShiftGeometry&lt;/b&gt;(SqlGeometry g, double xShift, double yShift)&lt;/u&gt;  &lt;br /&gt;Takes a &lt;i&gt;geometry&lt;/i&gt; instance and shifts if by a given X and Y amount.  &lt;br /&gt;&lt;u&gt;SqlGeometry &lt;b&gt;VacuousGeographyToGeometry&lt;/b&gt;(SqlGeography toConvert, int targetSrid)&lt;/u&gt;  &lt;br /&gt;A special case of the equirectangular projection, taking each point (lat,long) --&gt; (y, x).  &lt;br /&gt;&lt;u&gt;SqlGeography &lt;b&gt;VacuousGeometryToGeography&lt;/b&gt;(SqlGeometry toConvert, int targetSrid)&lt;/u&gt;  &lt;br /&gt;The inverse of the VacuousGeographyToGeometry projection.  &lt;h3&gt;Types&lt;/h3&gt; These types can be registered in SQL Server or used directly through the CLR.  &lt;br /&gt;&lt;u&gt;&lt;b&gt;SqlProjection&lt;/b&gt;&lt;/u&gt;  &lt;br /&gt;This class provides an extensible access point to various projections and inverse projections. See the file &lt;i&gt;projection_example.sql&lt;/i&gt; for a sample of its use. Currently supported projections are:   &lt;ul&gt;   &lt;li&gt;Albers Equal Area &lt;/li&gt;    &lt;li&gt;Equirectangular &lt;/li&gt;    &lt;li&gt;Lambert Conformal Conic &lt;/li&gt;    &lt;li&gt;Mercator &lt;/li&gt;    &lt;li&gt;Oblique Mercator &lt;/li&gt;    &lt;li&gt;Tranverse Mercator &lt;/li&gt;    &lt;li&gt;Gnomonic&lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;&lt;u&gt;&lt;b&gt;AffineTransform&lt;/b&gt;&lt;/u&gt;  &lt;br /&gt;This provides general affine transformations. See the example &lt;i&gt;transform_example.sql&lt;/i&gt; for a sample of its use.  &lt;h3&gt;Aggregates&lt;/h3&gt;  &lt;p&gt;While implemented as classes, aggregates are essentially functions that take a collection of inputs to a single result.   &lt;br /&gt;&lt;u&gt;&lt;b&gt;GeographyUnionAggregate&lt;/b&gt;&lt;/u&gt;    &lt;br /&gt;This aggregate computes the union of a set of &lt;i&gt;geographies&lt;/i&gt;.    &lt;br /&gt;&lt;u&gt;&lt;b&gt;GeometryEnvelopeAggregate&lt;/b&gt;&lt;/u&gt;    &lt;br /&gt;This aggregate computes the envelope of a set of input &lt;i&gt;geometries&lt;/i&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:38d5832e-1bf3-4764-a465-ce1b1e3e1787" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SQL2008" rel="tag"&gt;SQL2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Spatial" rel="tag"&gt;Spatial&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Geography" rel="tag"&gt;Geography&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Spatial+Toolkit" rel="tag"&gt;Spatial Toolkit&lt;/a&gt;&lt;/div&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/613/List-of-links-to-all-the-SQL-2008-Spatial-Methods.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/613/List-of-links-to-all-the-SQL-2008-Spatial-Methods.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/613/List-of-links-to-all-the-SQL-2008-Spatial-Methods.aspx</guid>
      <pubDate>Fri, 03 Jul 2009 01:32:52 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=613</trackback:ping>
    </item>
    <item>
      <title>Drawing a circle in Bing Maps</title>
      <description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="johnWeeGo[1]" border="0" alt="johnWeeGo[1]" src="/Portals/0/johnWeeGo.jpg" width="30" height="44" /&gt;I noticed my old code samples around the place are a little outdated so I created this little sample based off the &lt;a href="http://www.microsoft.com/maps/isdk/ajax/" target="_blank"&gt;Bing Maps iSDK&lt;/a&gt; today. This is a little helper function that calculates 360 points around the location provided at the given radius in KM. The co-ordinates are quite accurate and you will notice the effects of adding a circle at different Latitudes on the Mercator map.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="bingmapcircle" border="0" alt="bingmapcircle" src="/Portals/0/Blog/Files/8/612/WLW-DrawingacircleinBingMaps_14B29-bingmapcircle_d4f7090e-6b52-4a0f-8495-1d68b5dc5925.jpg" width="356" height="364" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Full source:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;!&lt;/span&gt;&lt;span style="color: #a31515"&gt;DOCTYPE &lt;/span&gt;&lt;span style="color: red"&gt;html PUBLIC &lt;/span&gt;&lt;span style="color: blue"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
   &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
      &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;&lt;/span&gt;Circle Example Bing Maps&lt;span style="color: blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
      &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;meta &lt;/span&gt;&lt;span style="color: red"&gt;http-equiv&lt;/span&gt;&lt;span style="color: blue"&gt;="Content-Type" &lt;/span&gt;&lt;span style="color: red"&gt;content&lt;/span&gt;&lt;span style="color: blue"&gt;="text/html; charset=utf-8" /&gt;
      &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text/javascript" &lt;/span&gt;&lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2"&gt;&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
      &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text/javascript"&gt;
          var &lt;/span&gt;map = &lt;span style="color: blue"&gt;null&lt;/span&gt;;
          &lt;span style="color: blue"&gt;var &lt;/span&gt;pinid = 0;

          &lt;span style="color: blue"&gt;function &lt;/span&gt;GetMap() {
              map = &lt;span style="color: blue"&gt;new &lt;/span&gt;VEMap(&lt;span style="color: #a31515"&gt;'myMap'&lt;/span&gt;);
              map.LoadMap();
              map.SetZoomLevel(2);
          }

          &lt;span style="color: blue"&gt;function &lt;/span&gt;AddPolyline() {
              &lt;span style="color: blue"&gt;var &lt;/span&gt;ll = map.GetCenter();
              &lt;span style="color: blue"&gt;var &lt;/span&gt;shape = &lt;span style="color: blue"&gt;new &lt;/span&gt;VEShape(VEShapeType.Polyline, getCircle(ll, 100));
              shape.SetTitle(&lt;span style="color: #a31515"&gt;'My circle'&lt;/span&gt;);
              shape.SetDescription(&lt;span style="color: #a31515"&gt;'This is shape number ' &lt;/span&gt;+ pinid);
              pinid++;
              map.AddShape(shape);
          }
          
          &lt;span style="color: blue"&gt;function &lt;/span&gt;getCircle(loc, radius) {
              &lt;span style="color: blue"&gt;var &lt;/span&gt;R = 6371; &lt;span style="color: green"&gt;// earth's mean radius in km
              &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;lat = (loc.Latitude * Math.PI) / 180; &lt;span style="color: green"&gt;//rad
              &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;lon = (loc.Longitude * Math.PI) / 180; &lt;span style="color: green"&gt;//rad
              &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;d = parseFloat(radius) / R;  &lt;span style="color: green"&gt;// d = angular distance covered on earth's surface
              &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;locs = &lt;span style="color: blue"&gt;new &lt;/span&gt;Array();
              &lt;span style="color: blue"&gt;for &lt;/span&gt;(x = 0; x &lt;= 360; x++) {
                  &lt;span style="color: blue"&gt;var &lt;/span&gt;p2 = &lt;span style="color: blue"&gt;new &lt;/span&gt;VELatLong(0, 0)
                  brng = x * Math.PI / 180; &lt;span style="color: green"&gt;//rad
                  &lt;/span&gt;p2.Latitude = Math.asin(Math.sin(lat) * Math.cos(d) + Math.cos(lat) * Math.sin(d) * Math.cos(brng));
                  p2.Longitude = ((lon + Math.atan2(Math.sin(brng) * Math.sin(d) * Math.cos(lat), Math.cos(d) - Math.sin(lat) * Math.sin(p2.Latitude))) * 180) / Math.PI;
                  p2.Latitude = (p2.Latitude * 180) / Math.PI;
                  locs.push(p2);
              }
              &lt;span style="color: blue"&gt;return &lt;/span&gt;locs;
          }

      
      &lt;span style="color: blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
   &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
   &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;body &lt;/span&gt;&lt;span style="color: red"&gt;onload&lt;/span&gt;&lt;span style="color: blue"&gt;="GetMap();"&gt;
      &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;='myMap' &lt;/span&gt;&lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;="&lt;/span&gt;&lt;span style="color: red"&gt;position&lt;/span&gt;:&lt;span style="color: blue"&gt;relative&lt;/span&gt;; &lt;span style="color: red"&gt;width&lt;/span&gt;:&lt;span style="color: blue"&gt;400px&lt;/span&gt;; &lt;span style="color: red"&gt;height&lt;/span&gt;:&lt;span style="color: blue"&gt;400px&lt;/span&gt;;&lt;span style="color: blue"&gt;"&gt;&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
      &lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;&lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;='#' &lt;/span&gt;&lt;span style="color: red"&gt;onclick&lt;/span&gt;&lt;span style="color: blue"&gt;='AddPolyline();'&gt;&lt;/span&gt;Add Circle&lt;span style="color: blue"&gt;&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
   &lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
&lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&gt;
      &lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;If you’re after a full toolkit of useful functions for Bing Maps you should check out the awesome: &lt;a title="http://vetoolkit.codeplex.com/" href="http://vetoolkit.codeplex.com/"&gt;http://vetoolkit.codeplex.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1be7e9e2-daeb-40ad-ab1b-25580987c458" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Circle" rel="tag"&gt;Circle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bing+Maps" rel="tag"&gt;Bing Maps&lt;/a&gt;&lt;/div&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/612/Drawing-a-circle-in-Bing-Maps.aspx</link>
      <author>veblog@soulsolutions.com.au</author>
      <comments>http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/612/Drawing-a-circle-in-Bing-Maps.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.soulsolutions.com.au/Blog/tabid/73/EntryId/612/Drawing-a-circle-in-Bing-Maps.aspx</guid>
      <pubDate>Wed, 01 Jul 2009 13:33:01 GMT</pubDate>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.soulsolutions.com.au/DesktopModules/Blog/Trackback.aspx?id=612</trackback:ping>
    </item>
  </channel>
</rss>