public boolean load( int type, BitBuffer bitBuffer, TileFeature tileFeature, TileFeatureArg tfa, boolean save) {
        
        TileMap tileMap = tileFeature.getTileMap();
        
        bitBuffer.alignToByte();
        int diffLat = bitBuffer.nextShort();
        int diffLon = bitBuffer.nextShort();
        long lat = diffLat * tileMap.getMC2Scale() + tileMap.getReferenceCoord()[0];
        long lon = diffLon * tileMap.getMC2Scale() + tileMap.getReferenceCoord()[1];
        
        if(lat<Integer.MIN_VALUE) lat=Integer.MIN_VALUE+1;
        if(lon<Integer.MIN_VALUE) lon=Integer.MIN_VALUE+1;
        if(lat>Integer.MAX_VALUE) lat=Integer.MAX_VALUE-1;
        if(lon>Integer.MAX_VALUE) lon=Integer.MAX_VALUE-1;
        
        this.latitude = (int)lat;
        this.longitude = (int)lon;
                
        if(save)
            tileFeature.addArgs(new CoordArg(this.latitude, this.longitude, type));
        
        return true;
    }