@Override
	public void paint(Graphics2D g, JXMapViewer map, int w, int h) {
		g = (Graphics2D) g.create();

		// convert from viewport to world bitmap
		Rectangle rect = map.getViewportBounds();
		g.translate(-rect.x, -rect.y);

		g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);

		Collection<Car> carsCopy = new ArrayList<>(allCars.values());
		for (Car car : carsCopy) {
			Vector2d lastPosition = car.getLastPosition();
			if (lastPosition == null) {
				return;
			}

			GeoPosition geoPosition = new GeoPosition(lastPosition.getY(),
					lastPosition.getX());

			Point2D pt = map.getTileFactory().geoToPixel(geoPosition,
					map.getZoom());

			if (car.isSignificant()) {
				g.drawImage(myCarIcon, (int) (pt.getX() - 20),
						(int) (pt.getY() - 20), null);
			} else {
				g.drawImage(otherCarIcon, (int) (pt.getX() - 20),
						(int) (pt.getY() - 20), null);
			}

			if (MapsRacer.DEBUG && car.getFrom() != null && car.getTo() != null) {
				geoPosition = new GeoPosition(car.getFrom().getyLat(), car
						.getFrom().getxLon());

				pt = map.getTileFactory()
						.geoToPixel(geoPosition, map.getZoom());

				g.setColor(Color.GREEN);
				g.fillOval((int) (pt.getX() - 10), (int) (pt.getY() - 10), 20,
						20);

				geoPosition = new GeoPosition(car.getTo().getyLat(), car
						.getTo().getxLon());

				pt = map.getTileFactory()
						.geoToPixel(geoPosition, map.getZoom());

				g.setColor(Color.BLUE);
				g.fillOval((int) (pt.getX() - 10), (int) (pt.getY() - 10), 20,
						20);
			}
		}

		g.dispose();
	}