public void travelTo(int zoneId, int districtNumber) throws IOException {
        long start = System.currentTimeMillis();
        this.initMapLoad();
        this.zoneMap(zoneId, districtNumber);

        int status = -1;
        boolean secondStatusCheck = false;

        do {
            try {
                Thread.sleep(200);
            } catch (InterruptedException ex) {
                // do nothing
            }
            status = this.getMapLoading();
            long elapsedTime = System.currentTimeMillis() - start;

            // if 15 seconds passed and the status is still "loading", execute the command again
            if (elapsedTime > 15000 && status != 2) {
                this.zoneMap(zoneId, districtNumber);
            }

            secondStatusCheck = this.isMapLoaded();
        } while (status != 0 && !secondStatusCheck);
    }