Geochart: en utilisant le code de région ISO 3266-2, mais affiche le nom réel

J'utilise Google Google Visualization Geochart API pour créer une carte des régions d'un pays. Je fournit le code de subdivision de pays ISO 3266-2 et obtenez les résultats corrects. Toutefois, les codes ISO 3266-2 comme étiquette dans le tableau sont une mauvaise expérience utilisateur. Je voudrais donc fournir une étiquette personnalisée. Prenez ceci comme exemple:

function drawVisualization() { var data = google.visualization.arrayToDataTable([ ['Country', 'Popularity'], ['DE-BY', 200], ['DE-NW', 500] ]); var geochart = new google.visualization.GeoChart( document.getElementById('visualization')); geochart.draw(data, {width: 556, height: 347, region: 'DE', resolution: 'provinces'}); } 

[Essayez le Code Playground]

Je voudrais fournir «DE-BY» mais avoir «Bavaria» comme étiquette. Il est nécessaire pour moi d'utiliser les codes ISO 3266-2 car bien que Google écrit qu'un

Énoncé de texte en anglais (par exemple, "US-NJ" ou "New Jersey")

Est autorisé, il est très peu fiable et ne fonctionne pas avec l'exemple «Bavière».

Il s'agit d'une preuve rapide de concept qui fonctionne, je regarde quelque chose de similaire et j'espère obtenir le nom automatiquement, mais je ne sais pas si cela est possible tout à l'heure, mais cela permet au moins une population manuelle du texte d'info-bulle.

Les facteurs clés sont de créer votre table avec les colonnes requises, puis d'appliquer un PatternFormat pour obtenir la info-bulle comme vous le souhaitez, puis créer une vue de données avec seulement les colonnes requises pour la liaison de données.

 function drawVisualization() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Country'); data.addColumn('number', 'Value'); data.addColumn('string', 'Display'); data.addRows([ ['Germany', 200, 'Germany'], ['United States', 300, 'USA'], ['Brazil', 400, 'Brasil'], ['Canada', 500, 'Canada'], ['France', 600, 'France'], ['RU', 700, 'Russia'] ]); var geochart = new google.visualization.GeoChart( document.getElementById('visualization')); var formatter = new google.visualization.PatternFormat('{1}'); formatter.format(data, [0, 2]); var view = new google.visualization.DataView(data); view.setColumns([0, 1]); geochart.draw(view, {width: 556, height: 347}); } 

De mon expérience, il existe plusieurs problèmes avec l'ISO 3166-2 en dehors des codes inconnus de la plupart des mortels.

  1. Il ne semble pas y avoir d'emplacement où une version mise à jour par machine peut être trouvée disponible gratuitement.

  2. Les affectations continuent de changer sauf dans les pays les plus stables (généralement fédéraux) comme les États-Unis et le Canada. Il existe des versions faciles à traiter, mais à jour, disponibles gratuitement.

  3. Les noms de pays que les gens utilisent ne sont pas toujours les noms officiels (un peu long).

  4. Les noms de régions dans certains pays ne correspondent pas aux vues locales de ce que les régions sont réellement (bien pire au niveau de la sous-région).

  5. Les noms de (sous) région sont un mélange étrange d'anglais ou de langue locale.

  6. Pour les applications toujours centrées sur ASCII, il n'y a pas de ressource officielle ASCII des noms Unicode.

Je n'ai pas de solution algorithmique à cela, mais ma solution pragmatique au problème du pays au code est d'avoir une longue table de consultation pour gérer les variantes habituelles des noms de pays, puis une recherche inverse du code en un "canonique acceptable" " forme. En raison du # 6 dans mon cas, je m'assure que les formes canoniques sont ASCII. Je fais une tâche similaire pour les langues dans ISO 639-1 et -3.

Faire une telle liste pour toutes les régions dans l'ISO 3166-2 est une tâche très longue – actuellement je me concentre sur les pays de l'OCDE, des BRIC et de l'UE, car cela fait un long chemin.