M1IF13 - TP Mashups de données

Objectifs pédagogiques du TP

Outils

Préambule

Ce TP durera deux séances. Créez un projet MIF38-TP2 sur la forge, ajoutez-y votre binôme et vos encadrants (comme reporters). N'oubliez pas de mettre vos noms dans la description du projet.

Présentation de l'application

L'objectif est de créer une application qui présente des données géolocalisées issues de plusieurs sources :

L'utilisateur entrera un nom de lieu (pays, ville...) et l'application lui positionnera sur la carte ce lieu, avec une description textuelle issue de différentes sources de données.

Structure de l'application

Comme au TP précédent, vous allez réaliser une Single-Page Application (SPA). Cette application comportera deux vues (pour l'instant) : une page de recherche de points d'intérêt (PoI) et une page de visualisation de ces PoI sur une carte. Commencez par :

  1. Créer une nouvelle SPA en utilisant un framework côté client de votre choix
    Attention : votre code doit être directement exécutable une fois recopié sur un serveur statique
  2. Créez deux routes : "#search" et "#map", et mappez-les avec des modèles et des vues correspondants.
    • La vue pour la recherche comportera uniquement un formulaire avec un champ texte et un bouton de validation
    • La vue pour la carte contiendra par défaut une carte (!). Des informations y seront ajoutées pour l'enrichir ultérieurement
      Remarque : inutile de stocker la carte en LocalStorage
    • Le modèle pour la recherche permettra de lancer la recherche de localisation dans les différentes sources de données
    • Le modèle pour la carte permettra d'actualiser le positionnement sur la carte et d'y ajouter les informations issues de la recherche
  3. Placez l'application sur un serveur, de façon à ce que vos pages aient une origine, sans quoi il ne sera pas possible de faire de l'interrogation avec CORS.
  4. Requêtage cross-domain

    Modifiez le modèle de la recherche pour qu'il crée et envoie les requêtes suivantes :

    À la réception de la réponse au service de localisation, changez la route pour afficher la carte et centrez-la sur les coordonnées du lieu demandé.

    À la réception des réponses de DBPedia uniquement, créez et enrichissez une ou plusieurs "boîtes" (InfoWindow sous Google) avec le texte de description introductif de la / des ressources et positionnez-la (les) sur le lieu demandé.

    Remarque :

    Agrégation

    Pour l'instant, votre application ne gère pas les erreurs et n'utilise qu'une seule des deux sources de données (DBPedia et LinkedGeoData). Vous allez définir et mettre en oeuvre un modèle d'agrégation et de visualisation des données.

    Pour cela, commencez par mettre en place un requêtage similaire de LinkedGeoData. Testez.

    Modèle

    Définissez ensuite le modèle de données sous-jacent que vous souhaitez utiliser. Pour chaque type de données (ville, pays...), correspondra à un objet avec des attributs spécifiques (nom, description, coordonnées, nombre d'habitants, spécialités culinaires...), et vous stockerez l'ensemble de vos données dans un tableau JSON.

    Intégration

    Définissez ensuite la politique d'intégration des données dans le modèle : en fonction du type de données retourné par une source, ajoutez-le au modèle. À vous de définir comment faire pour gérer les doublons : privilégier une source, concaténer les résultats, les comparer...

    Vue

    Comme au TP1, mettez en place le templating pour ajouter à la carte un widget approprié et différent en fonction du type de ressource demandé.

    Utilisation du GPS

    À l'aide de l'API de géolocalisation, indiquez également sur la carte la position de l'appareil.

    Rendu du TP

    Le rendu du TP s'effectue sur la forge. Le dernier commit devra avoir été fait avant le début de la séance de TP suivante.

    Instructions complémentaires

    Pour ce qui est du serveur, je vous demande :

Licence Creative Commons
Valid XHTML 1.0 Transitional