diff --git a/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js b/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
index 96efab463b437315182ec6464db22479f84979ca..50d34be16bcbdced01eba37e863a7963b800bbc4 100644
--- a/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
+++ b/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
@@ -98,8 +98,10 @@ var regionChooser = (function(){
 			feature["source"] = "CityGML";
 		});
 		
-		features_by_project = groupBy(kml_source.getFeatures(), "project");
-		
+		var features = Array.from(kml_source.getFeatures());
+		// Sort projects
+		features.sort((a, b) => a.project.localeCompare(b.project));
+		features_by_project = groupBy(features, "project");
 		// Sort CityGMLs inside each project
 		Object.values(features_by_project).forEach(features => features.sort((a, b) => a.name.localeCompare(b.name)));
 	}