Index: src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(révision 1788)
+++ src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(copie de travail)
@@ -421,6 +421,7 @@
             lines = Main.pref.getBoolean(linesKey);
         // paint large dots for points
         boolean large = Main.pref.getBoolean("draw.rawgps.large");
+        boolean hdopcircle = Main.pref.getBoolean("draw.rawgps.hdopcircle", true);
         // color the lines
         colorModes colored = colorModes.none;
         try {
@@ -593,10 +594,11 @@
             } // end for trk
         } // end if lines
 
+
         /****************************************************************
-         ********** STEP 3d - DRAW LARGE POINTS *************************
+         ********** STEP 3d - DRAW LARGE POINTS AND HDOP CIRCLE *********
          ****************************************************************/
-        if (large) {
+        if (large || hdopcircle) {
             g.setColor(neutralColor);
             for (GpxTrack trk : data.tracks) {
                 for (Collection<WayPoint> segment : trk.trackSegs) {
@@ -606,11 +608,23 @@
                             continue;
                         Point screen = mv.getPoint(trkPnt.getEastNorth());
                         g.setColor(trkPnt.customColoring);
-                        g.fillRect(screen.x-1, screen.y-1, 3, 3);
+                        if (hdopcircle && trkPnt.attr.get("hdop") != null) {
+                            // hdop value
+                            float hdop = ((Float)trkPnt.attr.get("hdop")).floatValue();
+                            if (hdop < 0) {
+                                hdop = 0;
+                            }
+                            // hdop pixels
+                            int hdopp = mv.getPoint(new LatLon(trkPnt.getCoor().lat(), trkPnt.getCoor().lon() + 2*6*hdop*360/40000000)).x - screen.x;
+                            g.drawArc(screen.x-hdopp/2, screen.y-hdopp/2, hdopp, hdopp, 0, 360);
+                        }
+                        if (large) {
+                            g.fillRect(screen.x-1, screen.y-1, 3, 3);
+                        }
                     } // end for trkpnt
                 } // end for segment
             } // end for trk
-        } // end if large
+        } // end if large || hdopcircle
 
         /****************************************************************
          ********** STEP 3e - DRAW SMALL POINTS FOR LINES ***************
Index: src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java
===================================================================
--- src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(révision 1788)
+++ src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java	(copie de travail)
@@ -41,6 +41,7 @@
     private JTextField drawRawGpsMaxLineLengthLocal = new JTextField(8);
     private JCheckBox forceRawGpsLines = new JCheckBox(tr("Force lines if no segments imported."));
     private JCheckBox largeGpsPoints = new JCheckBox(tr("Draw large GPS points."));
+    private JCheckBox hdopCircleGpsPoints = new JCheckBox(tr("Draw a circle form HDOP value."));
     private ButtonGroup colorGroup;
     private JRadioButton colorTypeVelocity = new JRadioButton(tr("Velocity (red = slow, green = fast)"));
     private JRadioButton colorTypeDilution = new JRadioButton(tr("Dilution of Position (red = high, green = low, if available)"));
@@ -143,6 +144,11 @@
         panel.add(new JLabel(tr("Minimum distance (pixels)")), GBC.std().insets(60,0,0,0));
         panel.add(drawGpsArrowsMinDist, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
 
+        // hdopCircleGpsPoints
+        hdopCircleGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.hdopcircle", true));
+        hdopCircleGpsPoints.setToolTipText(tr("Draw a circle form HDOP value."));
+        panel.add(hdopCircleGpsPoints, GBC.eop().insets(20,0,0,0));
+
         // largeGpsPoints
         largeGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.large", false));
         largeGpsPoints.setToolTipText(tr("Draw larger dots for the GPS points."));
@@ -275,6 +281,7 @@
             Main.pref.putInteger("draw.rawgps.colors", 0);
         int ccti=colorTypeVelocityTune.getSelectedIndex();
         Main.pref.putInteger("draw.rawgps.colorTracksTune", ccti==2 ? 10 : (ccti==1 ? 20 : 45));
+        Main.pref.put("draw.rawgps.hdopcircle", hdopCircleGpsPoints.isSelected());
         Main.pref.put("draw.rawgps.large", largeGpsPoints.isSelected());
         Main.pref.put("draw.segment.direction", directionHint.isSelected());
         Main.pref.put("draw.segment.relevant_directions_only", interestingDirections.isSelected());
