Bing Maps wächst derzeit enorm in der Bedeutung. Besonders durch die Integration von Deep Zoom (Silverlight) und PhotoSynth hat Bing Maps starkes Aufsehen erregt. Doch auch für Software Entwickler kann Bing Maps sehr interessant sein. In dieser Tutorial Serie, welche mit “bingmaps tutorial” getagged ist, kann man sich durch sämtliche Posts durchklicken.
Mit diesem Artikel wollen wir uns ansehen, wie man die Bing Maps verwenden kann. Bevor wir starten ist jedoch noch ein Account bei Bing notwendig.
Einen Bing Maps Account kann man unter der Adresse https://www.bingmapsportal.com/ einrichten. Hierfür benötigt man eine gültige Windows Live ID. Im nächsten Schritt hat man bereits einen Account Key und man kann die SDK Tools verwenden.

Um die Bing Maps in Silverlight zu verwenden, muss vorher das Control geladen werden. Dies kann man unter http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830 downloaden.
Das Control kann man nun auch bereits sehr einfach in Silverlight verwenden. Hierfür muss man lediglich 3 Dinge erledigen:
1. Das Assembly in das Projekt und der XAML-Deklaration einfügen
2. Die Credentials setzen
3. Die Karte anzeigen
Schritt 1: Referenzen hinzufügen
Wenn man das Control eingefügt hat, kann es auch schon richtig los gehen. Damit das Control nun auch angezeigt werden kann, wollen wir den Namespace in XAML einfügen.
<UserControl x:Class="_01___Silverlight_Sample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:bing="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="600">
HINWEIS: Für das Beispiel wurde Silverlight 4 verwendet, es kann bei älteren Versionen etwas anders aussehen!
Im nächsten Schritt erstellen wir 2 Reihen (RowDefinitions) für die Anwendung, damit wir einige Steuerelemente und das Control in der Anwendung platzieren können. Das Control selbst kann jetzt sehr einfach mit “bing:Map” angesprochen werden.
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition />
</Grid.RowDefinitions>
<bing:Map Grid.Row="1" />
Führt man nun die Anwendung aus, so hat man auch schon gleich ein erstes Ergebnis. Was jedoch noch stört ist dieser Schriftzug in der Mitte, der die nicht gesetzten Credentials erwähnt. Spätestens beim Kunden würde dies zu Problemen führen ;).
Damit man dieses Problem umgeht, setzen wir in den Ressourcen des UserControls noch einen Credentials Provider.
<UserControl.Resources>
<bing:ApplicationIdCredentialsProvider x:Key="BingStorageCred" ApplicationId="VIEL_ZU_LANGER_WERT_DER_HIER_SONST_STEHT_!!!" />
</UserControl.Resources>
In der Karte (Map) muss man diese Credentials nun nur noch setzen:
<bing:Map Grid.Row="1" CredentialsProvider="{StaticResource BingStorageCred}" />
Alternativ kann man die Credentials auch im CredentialsProvider angeben. Sollte man jedoch mehr Controls verwenden, welche die Credentials brauchen, so ist dies nicht von Vorteil. Nun kann der Entwicklung mit dem Control nichts mehr im Wege stehen.

Mario Meir-Huber
Web: www.meirhuber.de
Twitter: www.twitter.com/mario_mh