How will Apple’s New Developer Agreement Affect iPhone Mapping Apps?

by James Richards April 09, 2010

The Twitterverse and Blogosphere are all abuzz with yesterday’s news that Apple has apparently changed terms of its Developer Agreement to explicitly ban apps created with cross-compilers. This got me thinking about how this change might affect those of us developing mapping apps for the iPhone (and iPad).

The change that most people are talking about is in section 3.3.1 which now reads:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

I have to wonder if ESRI’s iPhone SDK or CloudMade’s iPhone SDK or any of the location toolkits such as SimpleGeo’s iPhone SDK were “originally written” in one of the approved languages without the aid of a cross-compiler. If not, apps built with these tools could be banned.

As an example, the linked SimpleGeo page states that “The SGClient is a basic Objective-C wrapper around SimpleGeo's OAuth API.” What is SimpleGeo’s OAuth API and does it meet these new requirements?

I’d like to know from some of these vendors whether or not their SDKs meet Apple’s new requirements.

But even more disturbing is this language in section 3.3.2:

“An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise.”

That sounds to me like Apple just banned the use of any third party APIs. Scary.

For now, we have to take a wait and see approach until Apple clarifies these points. But even if we can move forward using these SDKs to develop mapping apps for the iPhone / iPad, are people going to be willing to risk investing in this technology under these conditions? Even if you do everything right by Apple’s standards, there is a very real possibility of getting banned in the future when Apple suddenly changes it’s terms again.

It’s well known that Apple acquired Placebase last year, but no one really knows what the Apple Geo Team is up to. Who’s to say that Apple won’t release their own mapping platform and ban the use of all other mapping platforms on their devices? Sounds crazy, but then again, it appears that Apple has banned the use of a Lua which helped produce Angry Birds (the best selling paid app of all time) as well as every single game created by Electronic Arts.

Does this news change your perspective on developing mapping apps for the iPhone / iPad? Leave a comment to share your thoughts…

Tags: , , , , ,


Getting Started with the Bing Maps Silverlight Control, Visual Studio 2008 and Blend 3

by James Richards April 08, 2010


This walkthrough shows how to create a new Bing Maps Silverlight Control project with either Visual Studio 2008 SP1 or Blend 3. While some of this material has been covered on other sites and blogs, I’m writing about it here for two reasons:

  1. Some of the other posts are now outdated, using older, beta or CTP versions of the APIs and development tools.
  2. In future posts about developing with the Bing Maps Silverlight Control, I want to be able to refer to this “Getting Started” guide so I don’t have to keep repeating the basics.

Download and Install the Development Tools

If you haven’t already done so, download and install the following applications, SDKs and Toolkits:



Microsoft Visual Studio 2008 SP1 (Includes .NET Framework 3.5 SP1)

Silverlight Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1


Expression Blend 3 or Expression Studio 3
Bing Bing Maps Silverlight Control SDK v 1.0.1


SilverlightToolkit Microsoft Silverlight 3 Toolkit November 2009




Setup a Big Maps Developer Account Using Your Windows Live ID


If you don’t already have a Windows Live ID, you’ll need to signup for one on the Windows Live site:

One you have your Windows Live ID, go the the Bing Maps Developer Portal:

Click on the “Create or view Bing Maps keys” link in the left menu:


When prompted, login with your Windows Live ID. After logging in, you will be redirected to the proper page.

Enter the Application Name and the URL, and click the Create Key button.


Here you can see I’ve created two keys. One for development and testing through the http://localhost url and one for running applications on a live URL (in this case, my blog.) I’ve blacked out the actual keys.

Create a New Bing Maps Silverlight Application with Visual Studio

When creating a new Silverlight application, you can start with either Visual Studio or Blend. First we’ll look at how to create the application with Visual Studio. Then in the next section we’ll see how it’s done with Blend.

Start Visual Studio 2008 and choose File > New > Project…

Select Silverlight from the Project types tree, and Silverlight Application from the Templates list.

Give your application a name and click OK.


A dialog will appear asking if you want to host the application in a new web site. Make sure this option is checked, select ASP.NET Web Application Project, and click OK.


After the project is created, add references to the Bing Maps assemblies.

Right click on the References folder in the BingMapsApp project and choose Add Reference…


Select the Browse tab and browse to the Libraries directory in the Bing Maps Silverlight Control installation folder. The default installation location is C:\Program Files\Bing Maps Silverlight Control\V1\Libraries.

Select both the Microsoft.Maps.MapControl.dll and Microsoft.Maps.MapControl.Common.dll assemblies, and click OK.



Modify the xaml for the MainPage.xaml user control by adding an xml namespace declaration for the Bing Maps assembly.



Note: The samples on Microsoft’s Bing Maps Silverlight Control Interactive SDK all use the “m” prefix for the namespace, but I prefer to use “bing” as it makes the code a little more expressive. Hat tip to Bobby Diaz’s Bing Maps Silverlight MVVM Sample for that idea.

Add a <bing:Map …/> element inside the layout root and set the CredentialsProvider property to the key that you generated earlier.


At this point, you should be able to press F5 and see the default map in your browser.


If you see the “Invalid Credentials” message then double check to make sure you have properly set the CredentialsProvider property.


At this point I like to clean up the Web project a little bit.

Open up the BingMapsAppTestPage.aspx page, select everything from <!DOCTYPE … down to the bottom of the file, and Ctrl+C to copy it to the clipboard.

Open up the Default.aspx page, delete everything from <!DOCTYPE … down to the bottom of the file, and paste in the contents from the clipboard.

Save the Default.aspx file.

Delete the BingMapsAppTestPage.aspx page and the BingMapsAppTestPage.html file.

Right click on Default.aspx and choose Set As Start Page…


Press F5 to run the project and confirm that the control is now hosted in the default page.



Create a New Bing Maps Silverlight Application with Blend

Now that we’ve covered how to create a new Bing Maps Silverlight application with Visual Studio 2008, lets take a look at how to accomplish the same task with Blend 3.

Start Blend 3 and choose File > New Project…

Select Silverlight from the Project types tree, and Silverlight 3 Application + Website from the template list.

Give your application a name, and click OK.


When you create a new Silverlight project in Blend, the structure of the web site is different than if you had created it in Visual Studio. The Silverlight app is hosted in an html page rather than an ASP.NET aspx page.


After the project is created, add references to the Bing Maps assemblies.

Right click on the References folder in the BingMapsApp project and choose Add Reference…


Browse to the Libraries directory in the Bing Maps Silverlight Control installation folder. The default installation location is C:\Program Files\Bing Maps Silverlight Control\V1\Libraries.

Select both the Microsoft.Maps.MapControl.dll and Microsoft.Maps.MapControl.Common.dll assemblies, and click OK.



Click the Asset Library button and type “map” in the search box to filter the assets to those controls that contain the phrase “map” in their name. Then select the Bing Maps Silverlight Control from the available choices.


Note: The preceding screen shot shows two controls named “Map”. The other one is ESRI’s ArcGIS API for Microsoft Silverlight/WPF Map Control. If you also happen to have this library installed, make sure you choose the correct Map.

After selecting the Map control, it will appear below the Asset Library button.


Double click the Map control button to add a map to the artboard at the default size.


Click on the Xaml button on the upper right hand side of the artboard to switch to Xaml view.


Notice that when you added the Map control Blend automatically added a namespace declaration for you.


Since the automatically generated namespace name is rather verbose, change it to “bing”.


Click the Design button on the upper right hand side of the code window to switch back to the Design view.

In the Properties window Layout bucket, the right and bottom margins will have defaulted to 240 and 180 respectively.


Set each of these properties to 0 so that the map fills the whole layout.



At the bottom of the Properties window, click arrow next to the Miscellaneous tab to expand it.

Paste your API Key into the text box for the CredentialsProvider property and hit return.


At this point you can click F5 to compile and run the project. Notice that the map does not fill the entire browser window like it did with the Visual Studio solution we built in in part 1.


This is because Blend sets an explicit Width and Height by default when creating a User Control as part of a new project, while Visual Studio sets DesignWidth and DesignHeight properties with the “Ignorable” namespace prefix.

Switch back to Xaml view, and replace the names of the Width and Height properties with d:DesignWidth and d:DesignHeight.


Now run the project again and the Map will fill the whole browser window.

As was the case in the Visual Studio walkthrough, if you see the “Invalid Credentials” message then double check to make sure you have properly set the CredentialsProvider property.


This post presented two methods for creating a new Bing Maps Silverlight Control project. The first method gave a walkthrough using Visual Studio 2008 SP1, and the second showed how to accomplish the same task with Blend 3. You can use either method, depending on which tool you are most comfortable with.

Additional Resources


Bing Maps MVVM Samples

Tags: , , ,

Bing Maps | Silverlight

Los Angeles Spatial / Location Developers Meetup Group

by James Richards April 02, 2010
image Today I created a new Meetup group for Spatial / Location Developers in Los Angeles.

Here is the group description:

The Los Angeles Spatial / Location Developers Group is for software developers working with any spatial or location enabled platforms. The group aims to be platform and vendor neutral.

Some of the technologies we may discuss include ESRI, Google Maps, Bing Maps, the OSGeo stack, Open Street Map, SimpleGeo, and Social Location APIs from Foursquare, Gowalla, Brightkite, Twitter, Facebook (forthcoming), etc.

All levels of developers are welcome, from seasoned GIS professionals to those new to geospatial or mobile location development.

As this is a new group we will be actively looking for creative input on the direction and focus that members want to see.

Meetup groups organize online and then meet face to face for real world interaction. I've been participating in other groups recently and found them to be fun and helpful. I’m hoping this Meetup group will grow into a place for geospatial and location developers to interact and learn from one another.

If you are in the Los Angeles area and are interested in geospatial or location development, please join the group at:

If you’re not in LA but know someone here who might be interested, please pass the word along. And if you're really inspired, start a spatial / location developers Meetup group in your own city!

Tags: , , , , , , , , , ,


ADO.NET (WCF) Data Services Paging – Where is SetEntitySetPageSize Method?

by James Richards April 01, 2010

When creating an ADO.NET or WCF Data Service, you can set up server based paging of the data by calling the SetEntitySetPageSize method on the config object as documented here and discussed in Scott Hanselman’s recent post on OData.

But after adding a new service to my project I tried to do this and the SetEntitySetPageSize method did not show up in Intellisense.



It turns out that when you create a new service the auto-generated code for the InitializeService method takes an IDataServiceConfiguration interface parameter, but the SetEntitySetPageSize method is defined on the DataServiceConfiguration class. So remove the “I” from the parameter type and try again.



Try something like config.SetEntitySetPageSize(“*”, 25) to set the page size to 25 entities per request for all entity types.

But there is still a problem. If you compile the project now and run a query against the service you will get the generic error message “The server encountered an error processing the request. See server logs for more details.”

To see a more detailed error message, add the [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults=true)] attribute to the class and a config.UseVerboseErrors = true line to the InitializeService method.


Now when I run the query again I can see the cause of the problem: “Server paging cannot be used when the MaxProtocolVersion of the data service is set to DataServiceProtocolVersion.V1.”

To solve this we need to set the config.DataServiceBehavior.MaxProtocolVersion to V2, also shown in Scott’s post.

And now I have the Server Data Paging working! Here is the final version of the InitializeService method:


public class AdventureWorksService : DataService<AdventureWorksEntities>
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
        config.UseVerboseErrors = true;
        config.SetEntitySetAccessRule("*", EntitySetRights.All);
        config.SetEntitySetPageSize("*", 25);
        config.DataServiceBehavior.MaxProtocolVersion =

I hope this helps someone who’s encountering the same problem.

Special thanks to Phani Raju for answering my question about this on the WCF Data Services MSDN Forum.

Additional References

Tags: , , ,


My Favorite Tweets from the ESRI BPC / Devsummit - Day 5

by James Richards March 25, 2010

Presenting the final day of my favorite tweets from the ESRI Business Partners Conference / Developer Summit. Many thanks to all the Tweeps who kept the rest of us informed. I hope my small role of documenting my favorites has helped a few others.

  • - Empty halls at #devsummit. Guess the party last night was a success. #earlybirdsession - via @martenhogeweg
  • #MVC, test-driven development & #IOC shown with #Cairngorm 3 #devsummit #flex #as3 - via @dafkobyte
  • Extending the tiledmapservicelayer in silverlight with @rex_hansen using openstreetmap. Very cool. #devsummit - via @vtforester
  • @SharpGIS Dissin' the Flex folks. Too funny. I'm thinking Dodgeball game...flex team vs silverlight team. #devsummit - via @vtforester
  • Yay Jeremy! "Don't put ArcMap inside firefox" #devsummit #usability - via @bnoyle
  • For those interested in JS API 2 public need to get the bits from ESRI blogs. not integrated into resource centers yet #devsummit - via @bnoyle
  • Idea for next #DevSummit - API team should show nice, well designed workflow apps, and then go through how to build'em and release src - via @dbouwman
  • heard some people wondering what happened to gdb versioning. indeed no talk by ESRI at #devsummit -all web editing going directly to the gdb - via @oseidel
  • New Geolocator stuff is impressive. Configurable, Grammar-based with a plugin model.  Unicode/internationalised. Total rewrite. #DevSummit - via @geeknixta
  • Learn more about the forthcoming #ESRI ArcGIS Explorer Online from these #devsummit videos: - via @bernszukalski
  • ArcGIS 10 Final release in June #devsummit - via @RealIdahoBoy
  • arcgis 10 prerelease available for all EDN #devsummit - via @Gazymodo
  • Everyone heard, ezre said Fedora 12 support on its way. #devsummit - via @cageyjames
  • @cageyjames fedora not at 10, that is post 10 #devsummit - via @spangrud
  • Arcgisserver 10 to get openid support in the future! #devsummit - via @RealIdahoBoy
  • #ArcGIS SDK for #iPhone: map layers, overlay graphics, search/id, locate address, collect data & tasks. #devsummit - via @dafkobyte
  • Disappointed that feature service web editing is only supported using SDE. Small-ish shops could really benefit from this. #devsummit - via @BrightRain
  • Last day of #devsummit. Thanks to everyone at #ESRI and I look forward to seeing you all next year. - via @calvinit21
  • at Palm Springs airport. goodbye #devsummit - via @Gazymodo

For newcomers to the series, here are my day 1, day 2day 3 and day 4 favorites.


Tags: , , , , , ,


My Favorite Tweets from the ESRI BPC / Devsummit - Day 4

by James Richards March 24, 2010

Presenting day 4 of my favorite tweets from the ESRI Business Partners Conference / Developer Summit. A lot more tweets coming through today with the #devsummit hash tag than there were the first two days with the #esri_bpc hash tag. My unscientific conclusion is that developers use Twitter more than business types.

  • @trbaker Where are your #Twitter followers? GeoTweeters: #devsummit #gis #socialnetworking - via @geoinformacao
  • Sweet! We wom the mashup challenge! Plus big shout out to @dbouwman from #esri #devsummit - via @bnoyle
  • #ESRI #mashup challenge winners now online at #DevSummit #esridevsummit - via @giseducation
  • Recently "mashup," now "cloud." Keywords we get to listen to for a while. #devsummit - via @RealIdahoBoy
  • David Chappell: "Startups love cloud platforms. They allow startups to fail fast and cheaply (or even free)." #devsummit - via @ChrisSpagnuolo
  • Hopefully Chappell will show how expensive windows azure is. #devsummit - via @cageyjames
  • #esri story on cloud computing is good, but still need more info on cost/time to scale and a move away from ELA only needed #devsummit - via @bnoyle
  • Spatial data stored in user tables, can be accessed via SQL #devsummit - via @TrippingTheBits
  • It is odd to me tho that complex maps perform better using SHP in AGS. #devsummit - via @kirrilian
  • The Flex editor is nice, but worry some will forget to use tools in the context of a workflow. Don't re-create ArcEditor in Flex! #DevSummit - via @dbouwman
  • New to ArcGIS 10: Query Layers = layers based on real SQL queries! #devsummit - via @TrippingTheBits
  • Sounds like FGDB API is still a ways off #devsummit - via @cageyjames
  • No support for Annotation, Relationships, Networks, Topologies, Representations, Terrains and Parcel Fabrics in FGDB API #devsummit - via @cageyjames
  • Sweet. Ed architecting a SQL compatible geocode soln. Off the cuff in response to question #devsummit - via @bnoyle
  • Browser usage in demos: Firefox = most, Chrome = a couple, IE = NONE. #devsummit - via @gadtweet
  • REST extension URLs: /serverUrl/exts/extName/extMethod #devsummit - via @TrippingTheBits
  • Woah, add AGS Inet connection to ArcMap, right-click, choose Edit Features, makes local copy, sync back to db #devsummit - via @TrippingTheBits
  • #devsummit ver 2 of esri #silverlight API built on #VS2010 and #SL4. New widgets for editing,time,and feature data editing in toolkit. - via @cfemmer
  • #devsummit @SharpGIS is spreading the #SL goodness. woot for binding and commanding! - via @jrockers
  • Playing with ArcGIS Explorer sdk...pretty awesome! A lot more control than I expected! #devsummit - via @NateStrout
  • iPhone SDK for AGS Server interesting. If only I had a Mac for development.... #devsummit - via @northpointgis
  • MS Surface demo, picking AGOL sources and dropping onto a map is slick! #DevSummit - via @geeknixta
  • #devsummit Iphone SDK will work with iPad and iTouch too. SDK assumes always on connection. - via @jshek

For newcomers to the series, here are my day 1, day 2 and day 3 favorites.


Tags: , , , , , ,


My Favorite Tweets from the ESRI BPC / Devsummit - Day 3

by James Richards March 23, 2010

Presenting day 3 of my favorite tweets from the ESRI Business Partners Conference / Developer Summit. I missed most of the morning due to being on a client site. But here are my faves from the afternoon.

  • @MapsRus I was in the Server session at the #ESRI_BPC - Nothing new in ADF for 10 . Only bug fixes. All but dead. #webADF #DevSummit - via @dbouwman
  • REST Server Object Extension sounds easy, implement the two method IRESTRequestHandler #devsummit - via @TrippingTheBits
  • At desktop add-in session at #devsummit. No more COM wireup with extensions. Fantastic! - via @BrightRain
  • #devsummit @ajhaddad just said three very exciting letters, "MEF" - via @jrockers
  • @rex_hansen showing us how to use Expression Blend to make a Silverlight app. Great starter session. API is nicely integrated. #DevSummit - via @geeknixta
  • At the Silverlight WPF session where Rex @rexhansen is showing the real power of Binding #devsummit - via @alpascual
  • @dbouwman just called me a troublemaker in his presentation. #sweet #devsummit - via @cageyjames
  • ArcGIS for Silverlight API 2.0 public beta coming in April. Supporting VS2010, Expression Blend 4, Silverlight 4, .NET 3.5 & 4. #DevSummit - via @geeknixta
  • Wow. Presenter says "filegdb faster on linux than sde". Goes against everything esri has said for years. #devsummit - via @geodatabase 
  • Videos of the #ESRI_BPC demos are now available. The ArcGIS Server on Amazon demo will be posted tomorrow. - via @ESRI_BPC
  • Where are the Avenue sessions? #devsummit - via @odoenet

Not too many tweets using the #esri_bpc hash tag any more. Most tweeps have moved over to #devsummit.

For newcomers to the series, here are my day 1 and day 2 favorites.


Tags: , , ,


My Favorite Tweets from the ESRI BPC / Devsummit - Day 2

by James Richards March 22, 2010

Presenting day 2 of my favorite tweets from the ESRI Business Partners Conference / Developer Summit:

  • There will be a new workspace type in 10 - "SQL Workspace" for direct SQL queries (spatial/nonspatial) #devsummit - via @eriknybergNET
  • will be a great resource for #maps #WebApps #mobileApps and tools. #esri_bpc - via @cmcginty
  • Like the features of that allow you to share with everyone or by limiting to groups. Very useful for info prep. #esri_bpc - via @cmcginty
  • @mraad shows usage of local Shapefiles, and collaborative web map editing environment. #webmap #devsummit - via @dafkobyte
  • ArcGIS JavaScript API 2.0 public beta made available today #ESRI #devsummit - via @SterlingGIS
  • AGS 10 (JavaScript 2.0 API) looks great- editing and temporal data display. Nice to see all those oil & gas well app samples. #devsummit - via @dropstones
  • New AGS 'FeatureServer' will allow for feature insert & update via REST & SOAP APIs #devsummit - via @TrippingTheBits
  • Android sdk will be next big push after Arc10 release #Esri_bpc #devsummit - via @mapitout
  • details being presented on new ESRI certification program #ESRI_BPC - via @DaleLoberger
  • You know you're a bit of a nerd when you pick up a Spock bobblehead. #devsummit #swag - via @adamjpfister

Tweets seemed to peter out around 4pm today. I guess everyone was hitting the bar by then...

For newcomers to the series, day 1 favorites are here.


Tags: , , , ,

ESRI | Planet GS

My Favorite Tweets from the ESRI BPC / Devsummit - Day 1

by James Richards March 21, 2010

For those of you (like me) who couldn't make it to the ESRI Business Partner Conference / Developer Summit, you can follow the action on Twitter with the hash code #esri_bpc. You should also keep an eye on #devsummit since @dbouwman seems to have an aversion to typing underscores.

Here are a few of my favorite tweets from day 1:

  • #esri_bpc: Where ESRI decides when and how to eat its offspring. - via @howardbutler
  • 4min to have AGS set-up in the cloud? Wow! That should drop some billable hours... #esri_bpc - via @spanaut
  • ArcGIS in the Amazon cloud will work just like any other platform - except for the loading tons of data ;-) #esri_bpc - via @cmcginty
  • Dear ESRI, stop saying it takes 4 min to set up ArcGIS on AWS. #false #esri_bpc - via @cageyjames
  • Both an iPhone app for ArcGIS and an iPhone SDK will be available with ArcGIS 10 #ESRI_BPC - via @jeroenvanwinden
  • No support for legend /toc in rest api at 10... This is a GOOD thing! #devsummit - via @dbouwman
  • Just had demo of SQL Azure Spatial from Spatial Ed at #esri_bpc -- impressive. See Ed's blog + #FME just *works* on it - via @DaleAtSafe
  • @ESRI should be paying @dbouwman & @cageyjames some coin for their coverage of AGS10 at #DevSummit. <foil hat on> - via @tokumin
  • As compelling at this session is, I'm gonna install v10 beta on my laptop... #multi-tasking #DevSummit - via @dbouwman


Tags: , , , ,

ESRI | Planet GS

ESRI Data and Maps 2009 Update Available

by James Richards October 21, 2009

ArcGIS 9.3.1 users current on maintenance can now request the ESRI Data & Maps 2009 Update here:

Hope this helps!

Tags: ,

ESRI | Planet GS

Powered by BlogEngine.NET
Theme by Mads Kristensen | Modified by Mooglegiant
Creative Commons License This work is licensed under a Creative Commons Attribution 3.0 United States License.


James Richards

Hi, I'm James Richards the CTO and co-founder of Artisan Global LLC. We make location-aware mobile apps with maps. I'm the author of QuakeFeed and I helped launch Zaarly at LASW Feb 2011. I also enjoy surfing, snowboarding, golfing, yoga, and music. I love my family: Linda, Sequoya and our cats Remy and Twiggy. Thanks for stopping by, I hope you find something helpful here.

Subscribe by RSS   Follow me on Twitter   Connect on Facebook   View my profile on LinkedIn

Amazon Associates

Some of my posts may contain Amazon Associates links. I only include these links when it makes sense within the context of the article. If you are in the market for one of these items, please consider clicking on an affiliate link to make your purchase. You still get the same great deal from Amazon and it will help me pay for hosting and bandwidth. Thanks!