Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 11088)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 11089)
@@ -9,5 +9,9 @@
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 
 import javax.swing.AbstractAction;
@@ -33,4 +37,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.date.DateUtils;
 
@@ -103,5 +108,18 @@
             for (Marker marker : layer.data) {
                 final Node node = new Node(marker.getCoor());
-                node.put("name", marker.getText());
+                final Collection<String> mapping = Main.pref.getCollection("gpx.to-osm-mapping",
+                        Arrays.asList("name", "name", "desc", "description", "cmt", "note", "sym", "gpxicon"));
+                if (mapping.size() % 2 == 0) {
+                    final Iterator<String> it = mapping.iterator();
+                    while (it.hasNext()) {
+                        final String gpxKey = it.next();
+                        final String osmKey = it.next();
+                        Optional.ofNullable(marker.getTemplateValue(gpxKey, false))
+                                .map(String::valueOf)
+                                .ifPresent(s -> node.put(osmKey, s));
+                    }
+                } else {
+                    Logging.warn("Invalid gpx.to-osm-mapping Einstein setting: expecting even number of entries");
+                }
                 ds.addPrimitive(node);
             }
