Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(revision 8805)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(revision 8806)
@@ -15,5 +15,7 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -183,5 +185,5 @@
         Marker.markerProducers.add(new MarkerProducers() {
             @Override
-            public Marker createMarker(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
+            public Collection<Marker> createMarkers(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
                 String uri = null;
                 // cheapest way to check whether "link" object exists and is a non-empty collection of GpxLink objects...
@@ -207,12 +209,14 @@
 
                 String urlStr = url == null ? "" : url.toString();
+                String symbolName = wpt.getString("symbol");
+                if (symbolName == null) {
+                    symbolName = wpt.getString(GpxConstants.PT_SYM);
+                }
+                // text marker is returned in every case, see #10208
+                final Marker marker = new Marker(wpt.getCoor(), wpt, symbolName, parentLayer, time, offset);
                 if (url == null) {
-                    String symbolName = wpt.getString("symbol");
-                    if (symbolName == null) {
-                        symbolName = wpt.getString(GpxConstants.PT_SYM);
-                    }
-                    return new Marker(wpt.getCoor(), wpt, symbolName, parentLayer, time, offset);
+                    return Collections.singleton(marker);
                 } else if (urlStr.endsWith(".wav")) {
-                    AudioMarker audioMarker = new AudioMarker(wpt.getCoor(), wpt, url, parentLayer, time, offset);
+                    final AudioMarker audioMarker = new AudioMarker(wpt.getCoor(), wpt, url, parentLayer, time, offset);
                     Extensions exts = (Extensions) wpt.get(GpxConstants.META_EXTENSIONS);
                     if (exts != null && exts.containsKey("offset")) {
@@ -223,9 +227,11 @@
                         }
                     }
-                    return audioMarker;
+                    return Arrays.asList(marker, audioMarker);
                 } else if (urlStr.endsWith(".png") || urlStr.endsWith(".jpg") || urlStr.endsWith(".jpeg") || urlStr.endsWith(".gif")) {
-                    return new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset);
+                    final ImageMarker imageMarker = new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset);
+                    return Arrays.asList(marker, imageMarker);
                 } else {
-                    return new WebMarker(wpt.getCoor(), url, parentLayer, time, offset);
+                    final WebMarker webMarker = new WebMarker(wpt.getCoor(), url, parentLayer, time, offset);
+                    return Arrays.asList(marker, webMarker);
                 }
             }
@@ -246,9 +252,9 @@
      * @return a new Marker object
      */
-    public static Marker createMarker(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
+    public static Collection<Marker> createMarkers(WayPoint wpt, File relativePath, MarkerLayer parentLayer, double time, double offset) {
         for (MarkerProducers maker : Marker.markerProducers) {
-            Marker marker = maker.createMarker(wpt, relativePath, parentLayer, time, offset);
-            if (marker != null)
-                return marker;
+            final Collection<Marker> markers = maker.createMarkers(wpt, relativePath, parentLayer, time, offset);
+            if (markers != null)
+                return markers;
         }
         return null;
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 8805)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 8806)
@@ -129,7 +129,7 @@
                 offset = time - firstTime;
             }
-            Marker m = Marker.createMarker(wpt, indata.storageFile, this, time, offset);
-            if (m != null) {
-                data.add(m);
+            final Collection<Marker> markers = Marker.createMarkers(wpt, indata.storageFile, this, time, offset);
+            if (markers != null) {
+                data.addAll(markers);
             }
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java	(revision 8805)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerProducers.java	(revision 8806)
@@ -3,4 +3,5 @@
 
 import java.io.File;
+import java.util.Collection;
 
 import org.openstreetmap.josm.data.gpx.WayPoint;
@@ -16,5 +17,5 @@
 public interface MarkerProducers {
     /**
-     * Returns a Marker object if this implementation wants to create one for the
+     * Returns a collection of Marker objects if this implementation wants to create one for the
      * given input data, or <code>null</code> otherwise.
      *
@@ -22,6 +23,6 @@
      * @param relativePath An path to use for constructing relative URLs or
      *        <code>null</code> for no relative URLs
-     * @return A Marker object, or <code>null</code>.
+     * @return A collection of Marker objects, or <code>null</code>.
      */
-    Marker createMarker(WayPoint wp, File relativePath, MarkerLayer parentLayer, double time, double offset);
+    Collection<Marker> createMarkers(WayPoint wp, File relativePath, MarkerLayer parentLayer, double time, double offset);
 }
