I just launched the Official Community Coding Contest website.
http://communitycodingcontest.org
Be the first to rate this post - Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
A few weeks ago Microsoft sent me 3 MSDN Premium Subscriptions with Visual Studio 2008 Team Suite to give away to members of the community. I thought long and hard, and the best way I could come up with who to give them to is to hold a coding contest. So I'm happy to announce the Community Coding Contest! I don't have the website up yet, but I'll get it up as soon as I can. The website is now Live!
What are the Rules?
Here are the basic rules for the contest. Once the website is launched, I will post a more complete listing of rules there.
- All Code Submissions need to be licensed with some sort of Open Source or Shared Source license that allows it to be distributed (including source code) from the contest website and looked at/compiled/executed by any community member.
- All Code Submissions need to be created using one or more of the following tools: Microsoft Visual Studio 2008 Express/Standard/Professional, SQL Server 2005/2008 Express/Standard/etc.
- All Code Submissions must run on the Windows platform and can be Web or Desktop/Windows applications; that means Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 and/or IIS.
- You are inelligible to win if you are an active Microsoft MVP.
- You must provide us with a United States shipping address upon submitting your code entry, that we can ship your prizes to if you win. The United States shipping address is required, since the MSDN Subscriptions are region locked to the United States only.
- These rules are subject to change any time during the duration of the contest, with or without notice, and such changes will be posted on the official contest website.
What is the Contest Duration?
Contest submissions will be accepted from July 1st, 2008 through Sept. 30th, 2008. All contest submissions will be made available for download and voting from the website on Oct. 1st, 2008. Voting will be open from Oct. 1st 2008 through Oct. 15th 2008.
How are the Winners Decided?
The community will decide the winners. Once the submission deadline (Sept. 30th 2008) is reached, all submissions will be made available on the website for the community to download and check out. Then all community members (anyone) will be able to vote for the submission(s) they like the most. The submissions with the most votes, will win prizes. The voting will run from Oct. 1st 2008 through Oct. 15th 2008.
What are the Prizes?
Currently the prizes I have to give away are:
1st Place - 1 MSDN Premium Subscription with Visual Studio 2008 Team Suite
2nd Place - 1 MSDN Premium Subscription with Visual Studio 2008 Team Suite
3rd Place - 1 MSDN Premium Subscription with Visual Studio 2008 Team Suite
4th Place - Windows Vista Ultimate with SP1 and Visual Studio 2008 Professional
I am also looking for sponsors to donate additional prizes to give away.
Sponsorship Opportunities
I am currently looking for sponsors to donate in the following ways:
- Prizes
- Graphic Design for the contest website
If you are intested in sponsoring the contest by donating prizes to give away, or by donating graphic design work for the contest website, please Contact Me so we can discuss things in further detail.
More information about the contest will be is posted at the official contest website when it is launched within the next few days, that was launched on June 29th.
Official Community Coding Contest Website: http://communitycodingcontest.org
Currently rated 5.0 by 1 people - Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
The problem with using WebParts with UrlRewriting (or UrlMapping)
is the WebPart PersonalizationProvider uses the path of the page being
rendered to save/load the personalization state, not the path that was
rewritten that the user sees. So, to fix this you just need to create a
custom PersonalizationProvider and override all the methods that
reference path, and call the base methods but pass in the path that was
requested instead of the path being rendered.
Here's a SqlPersonalizationProvider I wrote that does this:
public class SqlPersonalizationProvider : System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider
{
protected override void LoadPersonalizationBlobs(WebPartManager webPartManager, string path, string userName, ref byte[] sharedDataBlob, ref byte[] userDataBlob)
{
base.LoadPersonalizationBlobs(webPartManager, this.GetActualPath(), userName, ref sharedDataBlob, ref userDataBlob);
}
protected override void ResetPersonalizationBlob(WebPartManager webPartManager, string path, string userName)
{
base.ResetPersonalizationBlob(webPartManager, this.GetActualPath(), userName);
}
public override int ResetState(PersonalizationScope scope, string[] paths, string[] usernames)
{
return base.ResetState(scope, paths, usernames);
}
public override int ResetUserState(string path, DateTime userInactiveSinceDate)
{
return base.ResetUserState(this.GetActualPath(), userInactiveSinceDate);
}
protected override void SavePersonalizationBlob(WebPartManager webPartManager, string path, string userName, byte[] dataBlob)
{
base.SavePersonalizationBlob(webPartManager, this.GetActualPath(), userName, dataBlob);
}
protected string GetActualPath()
{
HttpApplication app = HttpContext.Current.ApplicationInstance;
string p = app.Request.RawUrl;
// Convert Absolute to Relative
if (p.ToLowerInvariant().StartsWith(VirtualPathUtility.ToAbsolute("~/").ToLowerInvariant()))
{
p = "~/" + p.Substring(VirtualPathUtility.ToAbsolute("~/").Length);
}
// Remove QueryString Parameters
if (p.Contains("?"))
p = p.Substring(0, p.IndexOf("?"));
return p;
}
}
Another implementation (possibly a better one) would be to create a custom WebPartManager and change the path that is sent to the PersonalizationProvider, but the way shown above was simplier for me to implement and it works.
Currently rated 5.0 by 1 people - Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
Now that we've Made Sense of the U.S. Census ZCTA ARC/INFO Ungenerate (ASCII) files in Part 1 of this series, we are ready to import the U.S Census ZCTA Zip Code data into a database. In Part 2, we'll create database tables and import the Zip Code Boundary data into those tables in a MS SQL 2005 database.
Create SQL 2005 Database Tables
First lets create a couple database tables to hold all the Zip Code boundary data. One table will hold the ZipCodes, the other will hold all the Boundary Points for each Zip Code.
The table scheme is as follows:
ZipCode
ID - uniqueidentifier
ZipCode - char(5)
ZipCodeBoundary
ID - uniqueidentifier
ZipCodeID - uniqueidentifier
IslandID - int
Latitude - float
Longitude - float
SortOrder - int
Here's a couple things to not about the ZipCodeBoundary talble:
- The IslandID field numbers each "island" or "zone" for that spefic zipcode's boundary. An island is an area within the zipcode that is omitted from the zipcode, or an island of land that is to be included within the zipcode that doens't physically thouch the main part of the boundary. The main boundary is going to have an IslandID value of 0 (zero).
- The SortOrder field numbers each boundary row in the order they appeared in the ARC/INFO Ungenerate (ASCII) file.
Here's the SQL code for creating these tables. For this article, I created these tables in a database named ZipCodeBoundaries.
USE [ZipCodeBoundaries]
GO
/****** Object: Table [dbo].[ZipCode] Script Date: 06/24/2008 15:40:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[ZipCode](
[ID] [uniqueidentifier] NOT NULL,
[ZipCode] [char](5) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_ZipCode] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[ZipCodeBoundary] Script Date: 06/24/2008 15:40:43 ******/
CREATE TABLE [dbo].[ZipCodeBoundary](
[ID] [uniqueidentifier] NOT NULL,
[ZipCodeID] [uniqueidentifier] NOT NULL,
[IslandID] [int] NULL,
[Latitude] [float] NULL,
[Longitude] [float] NULL,
[SortOrder] [int] NULL,
CONSTRAINT [PK_ZipCodeBoundary] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Import Data Into Database Tables
To make things easier, I wrote a small utility that reads in the "a.dat.csv" and ".dat.csv" files generated in Part 1 of this series and imports the data into the table defined above. One thing to note when importing the data from these file (and the original ARC/INFO Ungenerate (ASCII) files) is that each set of files starts numbering the ZipCodes at 1. So when importing into the database we much give each Zip Code a unique ID (in this article I'm using GUID's for this) and setting that ID correctly for each of the Zip Code Boundary Points.
Download the Import Utility:
ImportARCINFOASCIIToSql05Database.zip (15.18 kb)
Remember, that when running this utility, it can take awhile to import ALL the ZipCode Boundary data for the entire country.
Note, this example utility has the connection string hard coded in the Form1.cs code file. Don't forget to change it to point to your database, unless you create your database on the local SQL Express instance and name it "ZipCodeBoundaries" like I do in this article.
Prev Part: Part 1 - Making sense of U.S. Census ZCTA ARC/INFO Ungenerate (ASCII) files
Next Part: Part 3 - Plotting Zip Code Boundary Data on a Map
Note: the next part of this series is not written yet, when I post it on the blog, I'll also update this part to link to Part 3.
Currently rated 5.0 by 1 people - Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
One question that I get fairly oftern is "How do I plot Zip Code boundaries on a map?". Well, the answer isn't simple, well at least it hasn't been. So, I've decided to write a series of articles going through the steps needed to obtain Zip Code boundary data, makes sense of it and plot it on a map. I'm not sure how many parts this series will be, but it'll probably be at least 3.
Where do I get Zip Cod Boundary Data From?
There are a number of campanies that sell geocode data that includes Zip Code Boundaries and many more things. But, if all you want are the Zip Code boundaries, it so happens that you can download this data completely free from the U.S. Census Bureau website. Zip Code Boundary data is actually one of the many different data sets available from the U.S. Census Bureau.
The data I'll focus on here is the Census 2000 5-Digit ZIP Code Tabulation Areas (ZCTAs) in ARC/INFO Ungenerate (ASCII) format. Even though these files are in their own "special" format, described here, they are still just plain ASCII and easily converted into CSV files to be imported into a database.
What's this ARC/INFO Ungenerate (ASCII) file format?
Ok, now that you've downloaded the Zip Code Boundary data in ARC/INFO Ungenerate (ASCII) format, it's time to make sense of this "special" file format they are in. Since the file format is in ASCII it is simple to make sense of.
Here's a couple snippets of data from each of the files that each .ZIP file you downloaded contains:
Files ending in "a.dat":
1
"356HH"
"356HH"
"Z5"
"5-Digit ZCTA"
2
"35677"
"35677"
"Z5"
"5-Digit ZCTA"
Files ending in ".dat":
1 -0.874385997915983E+02 0.347957138950617E+02
-0.881816728501744E+02 0.350078088730874E+02
-0.881819180000000E+02 0.349990240000000E+02
-0.881772430000000E+02 0.349917870000000E+02
-0.881751840000000E+02 0.349895430000000E+02
-0.881682580000000E+02 0.349777710000000E+02
The files that end in "a.dat" contain the zip codes and some other info along with an ID used to reference them in the other file.
The files that end in ".dat" contain all the geocode points for each of the zip codes defined in the other file.
How do I convert it to CSV?
Well, you could look at the ARC/INFO Generate (ASCII) Metadata Cartographic Boundary File Format definition and write a parser that then saves in in a CSV format.
Or, you could just download and use the one I wrote for this article:
Download Conversion Utility: ARCINFOASCIItoCSVConverter.zip (11.90 kb)
To use this utility, just unzip the contents of all the Zip files you downloaded from the U.S. Census Bureau website into a single folder, and click the "Convert All Files in Folder" button to select that folder and automatically convert all the files in that folder to a CSV file format.
The resulting CSV files will look like the following examples:
ZipID,FIPS CODES(S),NAME,LSAD,LSAD TRANSLATION
0, , , ,
1,356HH,356HH,Z5,5-Digit ZCTA
2,35677,35677,Z5,5-Digit ZCTA
3,35677,35677,Z5,5-Digit ZCTA
And...
ZipID,IslandId,LATITUDE,LONGITUDE,SortOrder
1,,-87.4385997915983,34.7957138950617,0
1,,-88.1816728501744,35.0078088730874,1
1,,-88.181918,34.999024,2
1,,-88.177243,34.991787,3
1,,-88.175184,34.989543,4
Now, you'll be able to able to easily import this data into a database, which brings us to the end of this part.
Reference Links:
See the following links for reference in addition to this article:
U.S. Census Bureau - Census 2000 5-Digit ZIP Code Tabulation Areas (ZCTAs) Cartographic Boundary Files
This is where you can download the U.S. Census Bureau's 5-Digit ZCTA files, specifically the ARC/INFO Ungenerate (ASCII) files used by the utility in this article.
ARC/INFO Generate (ASCII) Metadata Cartographic Boundary Files
This page contains the description of the file format used for the ARC/INFO Generate (ASCII) files.
Next Part: Part 2 - Import Zip Code (U.S. Census ZCTA) Data Into A Database
Currently rated 5.0 by 2 people - Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
I've been looking into Silverlight in my spare time a bit, to see what it has to offer, and the JavaScript "Interop" is actually pretty neat and simple to use. About three months ago I wrote a post titled "Working with HTML DOM in Silverlight using the Bridge Pattern"; so I think this time I'll go over some of the basics involved with communicating back and forth between Silverlight and JavaScript. This article is written by referencing Silverlight 2 Beta 2, but should still hold relevent in the final release of Silverlight 2.
Call a JavaScript Methods from within Silverlight
1) Using the Eval method
Silverlight does expose the JavaScript Eval method, so you can use it to call some JavaScript in the page
Here's a couple examples of calling Eval from in Silverlight:
using System.Windows.Browser;
// set a global variable
HtmlPage.Window.Eval("myJSObject = 2;");
// invoke a global method
HtmlPage.Window.Eval("myJSMethod();");
One thing to keep in mind with using Eval, even from Silverlight, is you can potentially open yourself up to script injection vulnerabilities. Instead of using Eval, you should use Invoke, which is my next example.
2) Using the Invoke method
You can use the Invoke method to execute some global JavaScript method within your page.
Here's a couple examples, one without arguments, the other passing in two arguments:
using System.Windows.Browser;
// Call a global method without passing in arguments
HtmlPage.Window.Invoke("myJSMethod");
// Call a global method, pass in two arguments
// First argument is a string
// Second argument is an integer
HtmlPage.Window.Invoke("myJSMethod", "Chris", 42);
Returning Values From JavaScript Method Calls
Now that we've covered how to execute JavaScript methods from Silverlight, I'll show how to captures values that are returned from those method call.
Both the Eval and Invoke methods return an Object. The Object returned is a reference to the JavaScript object that is returned from the method call. To get at the returned value the Object needs to be cast into the appropriate data type.
Here's some examples of casting the ScriptObject to different data types to return different data types from JavaScript methods:
// Returning a Double
double doubleValue = (double)HtmlPage.Window.Invoke("myJSMethod");
// Returning a String
string stringValue = (string)HtmlPage.Window.Invoke("myJSMethod");
One thing to always rememer when casting the object returned to a specific data type, is to check for NULL before casting, just to make sure a value was returned.
Returning Objects From JavaScript Method Calls and Accessing Its Methods and Properties
You can also pass back Objects to Silverlight from your JavaScript methods calls. Instead of casting the object returned from the Eval or Invoke method call to a double, string or any other data type; you'll need to cast it to a ScriptObject. ScriptObject is basically the data type used for a "general" JavaScript object.
// Execute the global JavaScript method
and cast it to ScriptObject
ScriptObject myScriptObject = (ScriptObject)HtmlPage.Window.Invoke("myJSMethod");
1) Accessing the ScriptObjects Properties
You can access the properties of the ScriptObject using the GetProperty method, then you must cast it to the appropriate data type.
// Get a Double Property value from our ScriptObject
double doubleValue = (double)myScriptObject.GetProperty("DoubleValue");
// Get a String Property value from our ScriptObject
double stringValue = (string)myScriptObject.GetProperty("StringValue");
2) Invoke one of the ScriptObjects Methods
The ScriptObject has an Invoke method that works just like the HtmlPage.Window.Invoke method shown above.
// Invoke a method that doesn't return a value
myScriptObject.Invoke("myMethod");
// Invoke a method that returns a string value, and pass in some arguments
string stringValue = myScriptObject.Invoke("myMethod", "Chris", 42);
Here's the JavaScript code that defines an object that has the properties and method show above:
var myJSObject = function(){
this.DoubleValue = 42;
this.StringValue = "Chris";
};
myJSObject.prototype.myMethod = function(arg1, arg2){
return "Chris";
};
Call Silverlight Methods From JavaScript
You can also call Silverlight methods from within JavaScript and return values from them.
1) Setup your Silverlight object as Scriptable
In order to interact with a Silverlight object from within JavaScript, it must be marked with the ScriptableType attribute, and any methods you want to expose need to be marked with the ScriptableMember attribute. Also, you must register the object as Scriptable in the page once the page loads, and give the object an alias that will be used to reference it within JavaScript.
Here's a sample of a page that exposes a method to be called from JavaScript:
[ScriptableType]
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
this.Loaded += new System.Windows.RoutedEventHandler(Page_Loaded);
}
void Page_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
// Register this object in the page as Scriptable
// so it can be access from within JavaScript
HtmlPage.RegisterScriptableObject("myObject", this);
}
[ScriptableMember]
public double GetDoubleValue()
{
// return a double
return (double)42;
}
}
2) Write your JavaScript code
When writing your JavaScript code, you need to get a reference to the Silverlight Plugin in the page, so you can call methods on your Silverlight object.
Here's a small example of doing this with a JavaScript method that calls the Silverlight method wired up to be fired on click of a button. In this example I'm using ASP.NET and the ASP.NET Silveright control.
<code:html>
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">
<head runat="server">
<title>Test Page For SilverlightJavaScriptInteropArticleCode</title>
<script type="text/javascript">
function callGetDoubleValue()
{
// Get a reference to the Silverlight Plugin
// Since we're using the ASP.NET Silverlight control
// we can use $find with the controls ClientID to get
// a reference to it
var pluginObject = $find("<%=Xaml1.ClientID%>");
// Get a reference to the actual Silverlight
// plugin element within the page
var plugin = pluginObject.get_element();
// Call the GetDoubleValue method of our Silverlight object
// notice we are referencing the object by the name of "myObject", that we setup
// in Silverlight when we registered the object as Scriptable
var dbl = plugin.Content.myObject.GetDoubleValue();
// Display the value to the user in an alert box
alert(dbl);
}
</script>
</head>
<body style="height:100%;margin:0;">
<form id="form1" runat="server" style="height:100%;">
<!-- The button that calls the js method above -->
<input type="button" value="test" onclick="callGetDoubleValue();" />
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div style="height:100%;">
<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightJavaScriptInteropArticleCode.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" />
</div>
</form>
</body>
</html>
</code>
Return Objects From Silverlight Method Calls To JavaScript
You can also return more complex object references to JavaScript from Silverlight method calls. One thing to remember, when returning objects from a Silverlight method call to JavaScript, is they need to be marked as Scriptble using the ScriptableType attribute, and the member (properties and methods) you want to expose must be marked with the ScriptableMember attribute.
Here's an example method to be called by JavaScript that returns an object type that is marked as Scriptable:
[ScriptableMember]
public myObject GetObjectValue()
{
myObject o = new myObject();
o.Name = "Chris";
return o;
}
[ScriptableType]
public class myObject
{
[ScriptableMember]
public string Name { get; set; }
[ScriptableMember]
public string GetName()
{
return this.Name;
}
}
Here's the simple JavaScript (based on the other example above) to call the method and access the returned objects properties and methods:
// Call the method and get the returned object
var obj = plugin.Content.myObject.GetObjectValue();
// Get the value of a property of the retured object
var strName = obj.Name;
// Get the returned value of a method of the returned object
var strName = obj.GetName();
Conclusion
The JavaScript interop in Silverlight is fairly simple to use, however the ability to call Silverlight from JavaScript was a little tricky for me at first, mostly due to how few Silverlight articles are out there. I hope this helps you get your JavaScript code (new or existing) working along-side Silverlight in a friendly fashion.
Also, here's a couple related posts I've written during the last couple months. The were written with Silverlight 2 Beta 1 as reference, but they still hold relevent with Beta 2.
Working with HTML DOM in Silverlight 2 Beta 1 using the Bridge Pattern
Show a MessageBox in Silverlight 2 Beta 1
Silverlight: Load JavaScript from Embedded Resource and Execute Within Page
Currently rated 5.0 by 4 people - Currently 5/5 Stars.
- 1
- 2
- 3
- 4
- 5
The Virtual Earth team has officially launched their Virtual Earth Staging Environment. The staging environment allows you to access all the features of Virtual Earth (during development and testing) without incurring transaction costs against your production account.
How do I access the Virtual Earth Staging Environment?
Simple, just use the following url when you include the VE JavaScript Control in your page. Notice, the only change in the url is the "staging." in the beginning, otherwise the url is exactly the same.
<script type="text/javascript" src="http://staging.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1"></script>
One thing to note about using the VE Staging environment is it doesn't work under SSL. If you need to test under SSL, and don't want to have the little "Yes/No" dialog show on each page load, then you'll need to test using the production url for now. I'm sure they'll fix this at some point, but we'll see.
Should I use the Virtual Earth Staging Environment?
You should use the Virtual Earth Staging Environment if you don't want to have the map transactions used during testing to count towards the transactions you're billed for. Also, if you haven't entered into a service level agreement with Microsoft for Virtual Earth, then you do not need to worry about the Staging environment, since you aren't being billed anyway.
For more information on using the Virtual Earth Staging Environment with Implementing Customer Identification see the "Virtual Earth: Implementing Customer Identification" article in MSDN.
Be the first to rate this post - Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Today, I released Web.Maps.VE v2.0!! I had originally planned to release it on June 30th, but was able to reach that goal about 2 weeks early, so here we are. Web.Maps.VE v2.0 builds on top of the previous v1.0 release, and adds many new features.
If you aren't familiar with Web.Maps.VE, it is the industries first ASP.NET Virtual Earth Mapping Server Control. It enables you (the developer) to implement MS Virtual Earth mapping into your ASP.NET web applications by writing only server-side code; there is absolutely no javascript required. It has never been easier to implement MS Virtual Earth mapping.
Some of the key features in Web.Maps.VE v2.0 are:
-
Plot Pushpins, Polylines and Polygons with Multiple Shape Layer Support
-
Perform "Find" searches from Server-side ASP.NET code
-
Reverse Geocoding (via FindLocations) from Server-side ASP.NET code
-
Plot Multi-Point Driving (and Walking) Directions
-
Implemnt MS Virtual Earth mapping from within Server-side ASP.NET code; No JavaScript Required
-
Server-side Handling of Client-side Map Events (onclick, endzoom, endpan, etc.)
-
Ability to easily build Dynamic/Interactive style Map-based searches
-
Supports ASP.NET 3.5 and Visual Studio 2008 with Design-Time Support
There are many more features to Web.Maps.VE v2.0; go Download the FREE Trial to see for your self.
One dependency that v1.0 has, was it was tied to the ASP.NET AjaxControlToolkit since it utilized some of the base classes within that library. Well, v2.0 no longer has a dependency on the ASP.NET AjaxControlToolkit, so you no longer have to worry about keeping your application in sync with the version of the AjaxControlToolkit that Web.Maps.VE requires.
Another very important thing to mention; we have changed the licensing for Web.Maps.VE v2.0. Web.Maps.VE v2.0 now uses a "Per Developer" licensing model, instead of the "Per Website" licensing model that v1.0 used. The Web.Maps.VE v2.0 Single Developer License allows a single developer the ability to develop Web.Maps.VE functionality into any ASP.NET web application they build. The Web.Maps.VE v2.0 component DLL can then ben distributed with any software built using the Single Developer License. This allows you (an individual developer) to use Web.Maps.VE v2.0 in as many ASP.NET web applications as you would like.
Go check out Web.Maps.VE v2.0 here: http://simplovation.com/page/webmapsve.aspx
Also, if you've purchased a Web.Maps.VE v1.0 Single Website License prior to June 17th, 2008; then you may qualify for a 20% discount to upgrade to Web.Maps.VE v2.0 until August 31st, 2008. Please contact Simplovation for more information regarding this special offer for existing customers.
Be the first to rate this post - Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Today, I released the 8th update (v1.00.08) release to the Simplovation Web.Maps.VE v1.0 ASP.NET AJAX Virtual Earth Mapping Server Control. This control has come along way since the initial (v1.00.00) release last October. It greatly simplifies the implementation of Virtual Earth into any ASP.NET web application by enabling full server-side (.net, C#, VB.NET) control of the map, while eliminating the need to write javascript/jscript. Unless of course you want to write javascript; in which case Web.Maps.VE has a full client-side javascript api that allows an unlimited number of customizations to be done.
I have also been working hard to meet the deadline of June 30th for the release of Web.Maps.VE v2.0. This release will greatly improve upon the v1.0 release by adding Shape Layer support, improved 3D map support, eliminating the dependency on the AjaxControlTookit, among other things.
Go check out Web.Maps.VE for FREE by downloading the Web.Maps.VE v1.0 FREE Developer / Trial License.
Be the first to rate this post - Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
One of my family members recently had heart bypass surgery using the da Vinci Surgical System from Intuitive Surgical. Robotic assisted surgery seems like something from the future, but it's done today and it pretty freaking cool.
Here's a video demonstrating the da Vinci Surgical System: http://www.intuitivesurgical.com/products/da_vinci_video_overview.aspx
Go check it out!
Be the first to rate this post - Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
|