Index: trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 11790)
+++ trunk/src/org/openstreetmap/josm/data/imagery/WMTSTileSource.java	(revision 11791)
@@ -25,5 +25,4 @@
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -170,5 +169,5 @@
         SelectLayerDialog(Collection<Layer> layers) {
             super(Main.parent, tr("Select WMTS layer"), new String[]{tr("Add layers"), tr("Cancel")});
-            this.layers = groupLayersByName(layers);
+            this.layers = groupLayersByNameAndTileMatrixSet(layers);
             //getLayersTable(layers, Main.getProjection())
             this.list = new JTable(
@@ -270,10 +269,16 @@
      */
     public DefaultLayer userSelectLayer() {
-        Collection<Entry<String, List<Layer>>> grouppedLayers = groupLayersByName(layers);
-
-        // if there is only one layer name no point in asking
-        if (grouppedLayers.size() == 1) {
-            Layer selectedLayer = grouppedLayers.iterator().next().getValue().get(0);
-            return new WMTSDefaultLayer(selectedLayer.name, selectedLayer.tileMatrixSet.identifier);
+        Map<String, List<Layer>> layerByName = layers.stream().collect(
+                Collectors.groupingBy(x -> x.name));
+        if (layerByName.size() == 1) { // only one layer
+            List<Layer> ls = layerByName.entrySet().iterator().next().getValue()
+                    .stream().filter(
+                            u -> u.tileMatrixSet.crs.equals(Main.getProjection().toCode()))
+                    .collect(Collectors.toList());
+            if (ls.size() == 1) {
+                // only one tile matrix set with matching projection - no point in asking
+                Layer selectedLayer = ls.get(0);
+                return new WMTSDefaultLayer(selectedLayer.name, selectedLayer.tileMatrixSet.identifier);
+            }
         }
 
@@ -297,5 +302,5 @@
     }
 
-    private static List<Entry<String, List<Layer>>> groupLayersByName(Collection<Layer> layers) {
+    private static List<Entry<String, List<Layer>>> groupLayersByNameAndTileMatrixSet(Collection<Layer> layers) {
         Map<String, List<Layer>> layerByName = layers.stream().collect(
                 Collectors.groupingBy(x -> x.name + '\u001c' + x.tileMatrixSet.identifier));
