Au courant de l’événement Mix’10, Microsoft a annoncé la mise à disposition des outils de développement pour la plateforme Windows Phone 7 et cette plateforme sera à nouveau l’occasion d’intégrer de la cartographie riche.

bingmaps_header

Ici je n’aborderai pas les avantages ou inconvénients de la plateforme mobile du Windows Phone 7, d’autres sont bien plus à même de faire ce genre d’analyse.

J’ai préféré me concentrer sur l’utilisation que je pouvais en faire dans l’état actuel afin d’intégrer le contrôle Bing Maps Silverlight.

 

Dear english friends, you can get an english version through this link :-)

flag_us http://www.boonaert.net/documents/ve/Bing%20Maps%20-%20Windows%20Phone%20Mobile%20client.pdf

 

Petit rappel sur le contrôle Bing Maps Silverlight

Le contrôle Bing Maps Silverlight a été mis à disposition par Microsoft au courant de l’année 2009. Bénéficiant directement de toutes les possibilités de Silverlight 3, il devient tout à fait possible d’utiliser la technologie DeepZoom intégrée depuis Silverlight 2 pour une expérience fluide et encore plus riche.

Pour découvrir une partie des possibilités de ce contrôle et de commencer, Microsoft met à disposition un iSDK disponible à travers ce lien :
http://www.microsoft.com/maps/isdk/silverlight/

La meilleure vitrine est réellement le site Bing Maps qui vient par ailleurs d’intégrer encore plus de données et de possibilités.

La plus récente, la possibilité de regarder les étoiles grâce aux données du WorldWide Telescope que je vous présentais il y a quelques années :

image

L’intégration du contenu FlickR :  image

Découverte de la plateforme Windows Phone 7

imageLes nouveautés apportées par cette nouvelle plateforme sont nombreuses lorsqu’on tente de prendre un peu de recul vis-à-vis de l’histoire des technologies mobiles dans le monde Microsoft.

Mais d’un point de vue développeur, les nouveautés ne sont pas tant dans les outils, dans le framework… non car Microsoft a une nouvelle fois capitaliser sur les connaissances et on retrouve sur cette plateforme mobile la possibilité de développer des applications Silverlight (en version 4) ou des applications utilisant la plateforme XNA (en version 4 aussi).

 

Les outils de développement et ressources sont disponibles à l’adresse suivante : http://developer.windowsphone.com/Default.aspx

Ces outils s’intègrent parfaitement à Visual Studio 2010 RC et autres versions 2010 Express ce qui garantit des possibilités de développement rapide.

Ici quelques liens pour bien débuter :

 

Présentation des contenus cartographiques

Il faut savoir que Microsoft, à travers son client mobile embarqué dans le Windows Phone 7, utilise un set de tuile dédié au mobile.

Il est important de garder en tête que ce set n’est pas disponible en utilisation commerciale, ici nous le mettons en œuvre uniquement dans le cadre d’un simple prototype.

Ce set est exposé à travers le réseau dédié de distribution de contenu de Microsoft tout comme les sets de tuiles habituels. Voici le format de l’url :

http://ecn.t7.tiles.virtualearth.net/tiles/cmd/mobileTile?g=330&base=h&a=21&device=mobile&dpi=d1

Les paramètres utiles de cette url sont les suivants :

  • tX : X est un numéro de serveur de tuile (de 0 à 7)
  • base=X : X est le style de carte (a = aérien, h=hybride, r=road)
  • a=QXYZ : QXYZ est la quadkey générée correspondant à la tuile
  • device=mobile : spécifie que l’on souhaite le TileSet mobile
  • dpi=XX : résolution des cartes qui adapte alors la présentation des labels (ici valeurs possibles “d1” et “40”, qui sont en héxadécimal)

Dès lors on peut obtenir des tuiles adaptées à la visualisation sur mobile comme celles ci :

tile mobile Bing Maps for Enterprise image image
 

Intégration du contenu cartographique

Tout d’abord, il nous faut désactiver les tuiles par défaut de Bing Maps.
Pour cela, voici le code utilisé, à placer en tant qu’enfant du MapControl (voir code complet plus bas) :

<m:Map.Mode>
    <mc:MercatorMode />
</m:Map.Mode>

Pour intégrer le set de tuile dédié au mobile, il faut développer une classe dérivée de TileSource qui remplacera la méthode GetUri() de la classe TileSource :

public class BingMapsMobileTileSource : TileSource
{
    #region Properties

    public string MapDpiResolution { get; set; }
    public string MapStyle { get; set; }

    #endregion

    public BingMapsMobileTileSource()
        : base("http://ecn.t{2}.tiles.virtualearth.net/tiles/cmd/
mobileTile?g=330&base={1}&a={0}&device=mobile&dpi={3}"
) { } #region TileSource specific methods public override Uri GetUri(int x, int y, int zoomLevel) { string quadKey = QuadKeyHelper.TileXYToQuadKey(x, y, zoomLevel); return new Uri( string.Format( this.UriFormat, quadKey, this.MapStyle, (x % 7), this.MapDpiResolution ) ); } #endregion }

On peut également remarquer l’ajout de quelques propriétés permettant d’utiliser plus simplement ce set et la composition de l’adresse conformément au format de l’url des tuiles.

Il est ensuite nécessaire d’enregistrer les différents namespaces que l’on utilise dans la partie déclarative (XAML).
Voici les parties de définitions des namespaces et des préfixes associés :

xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"
xmlns:mc="clr-namespace:Microsoft.Maps.MapControl.Core;assembly=Microsoft.Maps.MapControl"
xmlns:local="clr-namespace:SLBingMobile.Utilities.CustomTileSource"

Voici les parties déclaratives du contrôle cartographique Bing Maps :

<Grid x:Name="ContentGrid" Grid.Row="1">
    <m:Map NavigationVisibility="Collapsed">
        <m:Map.Mode>
            <mc:MercatorMode />
        </m:Map.Mode>
        <m:MapTileLayer>
            <m:MapTileLayer.TileSources>
                <local:BingMapsMobileTileSource 
                    MapDpiResolution="d1" 
                    MapStyle="r">
                </local:BingMapsMobileTileSource>
            </m:MapTileLayer.TileSources>
        </m:MapTileLayer>
    </m:Map>
</Grid>

Voici le résultat en exécution :

Windows-phone-emulator-tileset-mobile-bing-maps 

Conclusions sur l’intégration

Cet exemple n’est ici qu’une simple intégration du contrôle Silverlight Bing Maps et l’ajout de données cartographiques (tiles) au sein de ce contrôle.

Il montre la puissance laissée aux développeurs et la capacité de Microsoft à proposer un framework de développement qui devient commun à une multitude de device tout en permettant de capitaliser sur les connaissances déjà présentes dans les sociétés.

 

Les sources de l’exemple sont disponibles via ce lien :
http://www.boonaert.net/sources/SLBingMobile.zip 

 

Dans d’autres articles j’aborderai l’exploitation de ce contrôle à travers un scénario simple permettant de retirer un intérêt d’un tel exemple.