Index: utils/josm/plugins/mappaint/src/mappaint/AreaElemStyle.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/AreaElemStyle.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/AreaElemStyle.java	(revision 1501)
@@ -6,7 +6,8 @@
 	Color colour;
 
-	public AreaElemStyle (Color colour)
+	public AreaElemStyle (Color colour, int minZoom)
 	{
 		this.colour = colour;
+		this.minZoom = minZoom;
 	}
 
Index: utils/josm/plugins/mappaint/src/mappaint/ElemStyle.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/ElemStyle.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/ElemStyle.java	(revision 1501)
@@ -1,7 +1,13 @@
 package mappaint;
 
-// nothing in here yet
 abstract public class ElemStyle
 {
+	// zoom range to display the feature
+	protected int minZoom;
+
+	public int getMinZoom()
+	{
+		return minZoom;
+	}
 }
 
Index: utils/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/ElemStyleHandler.java	(revision 1501)
@@ -13,127 +13,138 @@
 public class ElemStyleHandler extends DefaultHandler
 {
-	boolean inDoc, inRule, inCondition, inElemStyle, inLine, inIcon, inArea;
-	ElemStyle curStyle;
-	ElemStyles styles;
-	String curWidth, curKey, curValue;
-	ImageIcon curIcon;
-	Color curColour;
-	boolean curAnnotate;
+    boolean inDoc, inRule, inCondition, inElemStyle, inLine, inIcon, inArea;
+    ElemStyle curStyle;
+    ElemStyles styles;
+    String curWidth, curKey, curValue;
+	int curMinZoom;
+    ImageIcon curIcon;
+    Color curColour;
+    boolean curAnnotate;
 
-	public ElemStyleHandler(  )
-	{
-		inDoc=inRule=inCondition=inElemStyle=inLine=inIcon=inArea=false;
-		styles = new ElemStyles();
-	}
+    public ElemStyleHandler(  )
+    {
+        inDoc=inRule=inCondition=inElemStyle=inLine=inIcon=inArea=false;
+        styles = new ElemStyles();
+    }
 
-	public void setElemStyles(ElemStyles styles)
-	{
-		this.styles = styles;
-	}
+    public void setElemStyles(ElemStyles styles)
+    {
+        this.styles = styles;
+    }
 
-	/*
-	ElemStyles getElemStyles()
-	{
-		return styles;
-	}
-	*/
+    /*
+    ElemStyles getElemStyles()
+    {
+        return styles;
+    }
+    */
 
-	@Override public void startDocument()
-	{
-		inDoc = true;
-	}
+    @Override public void startDocument()
+    {
+        inDoc = true;
+    }
 
-	@Override public void endDocument()
-	{
-		inDoc = false;
-	}
+    @Override public void endDocument()
+    {
+        inDoc = false;
+    }
 
-	@Override public void startElement(String uri,String name, String qName, 
-									Attributes atts)	
-	{
-		if(inDoc==true)
-		{
-			if(qName.equals("rule"))
+    @Override public void startElement(String uri,String name, String qName, 
+                                    Attributes atts)    
+    {
+        if(inDoc==true)
+        {
+            if(qName.equals("rule"))
+            {
+                inRule=true;
+            }
+            else if (qName.equals("condition") && inRule)
+            {
+                inCondition=true;
+                for(int count=0; count<atts.getLength(); count++)
+                {
+                    if(atts.getQName(count).equals("k"))
+                        curKey = atts.getValue(count);        
+                    else if(atts.getQName(count).equals("v"))
+                        curValue = atts.getValue(count);        
+                }
+            }
+            else if (qName.equals("line"))
+            {
+                inLine = true;
+                for(int count=0; count<atts.getLength(); count++)
+                {
+                    if(atts.getQName(count).equals("width"))
+                        curWidth = atts.getValue(count);
+                    else if (atts.getQName(count).equals("colour"))
+                        curColour=ColorHelper.html2color(atts.getValue(count));
+                }
+            }
+			else if (qName.equals("zoom"))
 			{
-				inRule=true;
-			}
-			else if (qName.equals("condition") && inRule)
-			{
-				inCondition=true;
-				for(int count=0; count<atts.getLength(); count++)
-				{
-					if(atts.getQName(count).equals("k"))
-						curKey = atts.getValue(count);		
-					else if(atts.getQName(count).equals("v"))
-						curValue = atts.getValue(count);		
-				}
-			}
-			else if (qName.equals("line"))
-			{
-				inLine = true;
-				for(int count=0; count<atts.getLength(); count++)
-				{
-					if(atts.getQName(count).equals("width"))
-						curWidth = atts.getValue(count);
-					else if (atts.getQName(count).equals("colour"))
-						curColour=ColorHelper.html2color(atts.getValue(count));
-				}
-			}
-			else if (qName.equals("icon"))
-			{
-				inIcon = true;
-				for(int count=0; count<atts.getLength(); count++)
-				{
-					if(atts.getQName(count).equals("src")) {
-						URL path = getClass().getResource("/images/nodes/"+atts.getValue(count));
-						curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
-					} else if (atts.getQName(count).equals("annotate"))
-						curAnnotate = Boolean.parseBoolean
-										(atts.getValue(count));
-				}
-			}
-			else if (qName.equals("area"))
-			{
-				inArea = true;
-				for(int count=0; count<atts.getLength(); count++)
-				{
-					if (atts.getQName(count).equals("colour"))
-						curColour=ColorHelper.html2color(atts.getValue(count));
-				}
-			}
-		}
-	}
+				curMinZoom = 0;
+                for(int count=0; count<atts.getLength(); count++)
+                {
+                    if(atts.getQName(count).equals("min"))
+                        curMinZoom = Integer.parseInt(atts.getValue(count));
+                }
+			}	
+            else if (qName.equals("icon"))
+            {
+                inIcon = true;
+                for(int count=0; count<atts.getLength(); count++)
+                {
+                    if(atts.getQName(count).equals("src")) {
+                        URL path = getClass().getResource("/images/nodes/"+atts.getValue(count));
+                        curIcon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(path));
+                    } else if (atts.getQName(count).equals("annotate"))
+                        curAnnotate = Boolean.parseBoolean
+                                        (atts.getValue(count));
+                }
+            }
+            else if (qName.equals("area"))
+            {
+                inArea = true;
+                for(int count=0; count<atts.getLength(); count++)
+                {
+                    if (atts.getQName(count).equals("colour"))
+                        curColour=ColorHelper.html2color(atts.getValue(count));
+                }
+            }
+        }
+    }
 
 
-	@Override public void endElement(String uri,String name, String qName)
-	{
-		if(inRule && qName.equals("rule"))
-		{
-			inRule = false;
-			styles.add (curKey, curValue, curStyle);
-		}
-		else if (inCondition && qName.equals("condition"))
-			inCondition = false;
-		else if (inLine && qName.equals("line"))
-		{
-			inLine = false;
-			curStyle = new LineElemStyle(Integer.parseInt(curWidth), curColour);
-		}
-		else if (inIcon && qName.equals("icon"))
-		{
-			inIcon = false;
-			curStyle = new IconElemStyle(curIcon,curAnnotate);
-		}
-		else if (inArea && qName.equals("area"))
-		{
-			inArea = false;
-			curStyle = new AreaElemStyle (curColour);
-		}
+    @Override public void endElement(String uri,String name, String qName)
+    {
+        if(inRule && qName.equals("rule"))
+        {
+            inRule = false;
+            styles.add (curKey, curValue, curStyle);
+        }
+        else if (inCondition && qName.equals("condition"))
+            inCondition = false;
+        else if (inLine && qName.equals("line"))
+        {
+            inLine = false;
+            curStyle = new LineElemStyle(Integer.parseInt(curWidth), curColour,
+										curMinZoom);
+        }
+        else if (inIcon && qName.equals("icon"))
+        {
+            inIcon = false;
+            curStyle = new IconElemStyle(curIcon,curAnnotate,curMinZoom);
+        }
+        else if (inArea && qName.equals("area"))
+        {
+            inArea = false;
+            curStyle = new AreaElemStyle (curColour,curMinZoom);
+        }
 
-	}
+    }
 
-	@Override public void characters(char ch[], int start, int length)
-	{
-	}
+    @Override public void characters(char ch[], int start, int length)
+    {
+    }
 }
 ////////////////////////////////////////////////////////////////////////////////
Index: utils/josm/plugins/mappaint/src/mappaint/ElemStyles.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/ElemStyles.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/ElemStyles.java	(revision 1501)
@@ -37,3 +37,8 @@
 		return null;
 	}
+
+	public boolean isArea(OsmPrimitive p)
+	{
+		return getStyle(p) instanceof AreaElemStyle;
+	}
 }
Index: utils/josm/plugins/mappaint/src/mappaint/IconElemStyle.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/IconElemStyle.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/IconElemStyle.java	(revision 1501)
@@ -7,8 +7,9 @@
 	boolean annotate;
 
-	public IconElemStyle (ImageIcon icon, boolean annotate)
+	public IconElemStyle (ImageIcon icon, boolean annotate, int minZoom)
 	{
 		this.icon=icon;
 		this.annotate=annotate;
+		this.minZoom = minZoom;
 	}	
 	
Index: utils/josm/plugins/mappaint/src/mappaint/LineElemStyle.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/LineElemStyle.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/LineElemStyle.java	(revision 1501)
@@ -7,8 +7,9 @@
 	Color colour;
 
-	public LineElemStyle (int width, Color colour)
+	public LineElemStyle (int width, Color colour, int minZoom)
 	{
 		this.width = width;
 		this.colour = colour;
+		this.minZoom = minZoom;
 	}
 
Index: utils/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java
===================================================================
--- utils/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java	(revision 1443)
+++ utils/josm/plugins/mappaint/src/mappaint/MapPaintVisitor.java	(revision 1501)
@@ -31,17 +31,11 @@
 	@Override public void visit(Node n) {
 		ElemStyle nodeStyle = MapPaintPlugin.elemStyles.getStyle(n);
-		if(nodeStyle!=null)
-		{
-			if(nodeStyle instanceof IconElemStyle)
-			{
+		if(nodeStyle!=null && Main.map.mapView.zoom()>=nodeStyle.getMinZoom()){
+			if(nodeStyle instanceof IconElemStyle) {
 				drawNode(n, ((IconElemStyle)nodeStyle).getIcon());
-			}
-			else
-			{
+			} else {
 				// throw some sort of exception
 			}
-		}
-		else
-		{
+		} else {
 			drawNode(n, n.selected ? getPreferencesColor("selected",
 									Color.YELLOW)
