gogleMaps

gogleMapsDavid Pichardie [x] [*]

La «proglet» gogleMap.

Cliquer ici pour faire une activité sur l'algorithme du plus court chemin.
Cliquer ici pour lire le tutoriel.
Cette proglet permet d'afficher des villes et des routes sur une carte de France à partir de coordonnées géographiques (longitude,latitude). La proglet fournie aussi une base de donnée constituée des coordonnées géographiques des grandes villes françaises et de certaines routes entre ces villes. Pour simplifier, ces routes sont de simples lignes droites. Un calcul de plus court chemin dans ce réseau de routes est aussi fourni.

Affichage sur la carte.

La carte de France de la proglet peut être modifiée à l'aides des fonctionnalités suivantes.

// Efface la carte pour faire disparaître les routes et les symboles désignant les villes.

void effaceCarte()

// Met en évidence un point de la carte désigné par ses coordonnées géographiques (longitude,latitude).

void affichePointSurCarte(double longitude, double latitude)

// Met en évidence un point de la carte désigné par ses coordonnées géographiques (longitude,latitude) en numérotant ce point avec le nombre index.

void affichePointSurCarte(double longitude, double latitude, int index)

// Trace une ligne droite entre un point de coordonnées géographiques (longitude1,latitude1) et un autre de coordonnées géographiques (longitude2,latitude2).

void afficheRouteSurCarte(double longitude1, double latitude1, double longitude2, double latitude2)

// Trace une ligne droite entre un point de coordonnées géographiques (longitude1,latitude1) et un autre de coordonnées géographiques (longitude2,latitude2) en prenant une couleur d'intensité intensite.

void afficheRouteSurCarte(double longitude1, double latitude1, double longitude2, double latitude2, IntensiteRoute intensite)
}
Pour l'affichage des routes, il est possible de préciser l'intensité d'affichage pour réaliser des effets de transparence. Une intensité est une valeur de type IntensiteRoute à choisir parmis { LEGER, MOYEN, FORT }.

Données géographiques.

La proglet fournie une base de coordonnées géographiques pour les grandes villes de France grâce aux tables suivantes.

// Table des latitudes associée à chaque nom de ville.

Map<String,Double> latitudes;

// Table des longitudes associée à chaque nom de ville.

Map<String,Double> longitudes;
Nous associons ainsi chaque nom de ville de la base de donnée à une latitude (un nombre au format Double) ainsi qu'à une longitude. Par exemple, l'expression latitudes.get("Paris") renvoie la latitude de Paris et longitudes.get("Paris") sa longitude. L'ensemble des villes répertoriées peut être obtenu par l'expression latitudes.keySet() de type Set<String>.
Exemple:
echo(latitudes.keySet());
provoque l'affichage suivant:
[Troyes, Lens, Nantes, La Rochelle, Angoulême, Le Havre, Bayonne, Saint-Nazaire, Amiens, Brest, Béthune, Montbéliard, Nîmes, Grenoble, Chambéry, Dijon, Tours, Nice, Lille, Strasbourg, Toulouse, Paris, Annecy, Avigon, Caen, Montpellier, Rennes, Perpignan, Valence, Besançon, Saint-Etienne, Thionville, Orléans, Clermont-Ferrand, Annemasse, Reims, Toulon, Dunkerque, Valenciennes, Metz, Limoges, Calais, Bordeaux, Lorient, Lyon, Angers, Marseille, Pau, Le Mans, Poitiers, Nancy, Rouen, Mulhouse]
Nous associons ainsi chaque nom de ville de la base de donnée à une latitude (un nombre au format Double) ainsi qu'à une longitude. Par exemple, l'expression latitudes.get("Paris") renvoie la latitude de Paris et longitudes.get("Paris") sa longitude. L'ensemble des villes répertoriées peux être obtenu par l'expression latitudes.keySet() de type Set<String>.
Les routes entre villes sont données par une table.

// Table des voisins de chaque ville.

Map<String,List<String>> voisins;
Chaque ville se voit ainsi associer une liste de voisins. Par exemple, la ville de Bordeaux est reliée dans notre réseau à Angoulême, Bayonne et Toulouse. Ceci se vérifie avec la commande
echo(voisins.get("Bordeaux"));
qui provoque l'affichage suivant.
[Angoulême, Bayonne, Toulouse]

Manipulations géographiques.

La proglet fournit enfin deux fonctions qui peuvent s'avérer utiles pour des calculs d'itinéraires.

// Calcule la distance (en km) sur la sphère terrestre entre un point de coordonnées géographiques (longitude1,latitude1) et un autre de coordonnées géographiques (longitude2,latitude2).

int distanceEuclidienne(double longitude1, double latitude1, double longitude2, double latitude2)

// Calcule un chemin sous forme d'une liste de noms de ville afin de relier la ville de nom depart à celle de nom arrivee en suivant uniquement des routes de la table voisins de la proglet.

List<String> plusCourtCheminGogleMap(Map<String,List<String>> voisinages, String depart, String arrivee)
Cette «proglet» est un composant logiciel ouvert dont documentation et code-source sont disponibles ici